写点什么

C 语言 _2 变量

作者:泾箐
  • 2022 年 9 月 05 日
    北京
  • 本文字数:2483 字

    阅读完需:约 8 分钟

C语言_2 变量

2.1.2 变量定义

找零钱问题:100-(用户输入)物品的价格=找你的钱我们需要:


  1. 有办法输入数字;

  2. 有地方放输入的数字;

  3. 输入的数字参与计算。


  int price=0;//定义了整形变量price,类型是int,初始值=0  printf("请输入金额(元):");  int change=100-price;  printf("找您%d元。\n",change);
复制代码


变量是一个保存数据的地方。变量定义的一般形式就是:<类型名称> <变量名称>变量的名字叫“标识符”,基本原则只能由字母、数字、下划线构成,数字不能出现在第一个位置上。C 语言的关键字(又叫保留字)不可用作字符。如何输入:输入也在终端窗口中。输入以行为单位进行,敲下回车,行结束。(敲下回车之前,程序不会读到任何东西。)

2.1.3 变量赋值与初始化

  int price=0;//其中=是赋值运算符,把右边的值赋给左边的变量。
复制代码


和数学中不同,b=a 和 a=b 在程序中有着相反的含义。当赋值发生在刚定义变量时,就叫程序的初始化。虽然 C 语言并没有强制要求所有的变量在被定义的地方做初始化,但所有变量在第一次被使用(出现在=等号右边)前都应该被赋值一次。如果没有初始化呢?就是使用这个变量在内存中的那个值。变量初始化:<类型名称> <变量名称>=<初始值>也可以在组合变量定义中给单个变量单独赋初值,如


  int a=0,b=1;
复制代码


有运算符的式子就叫表达式(比如=是赋值运算符)C 语言是有类型的语言,所有变量在使用前必须先定义或声明;所有变量必须有确定的数据类型(表示在变量中可以存放什么样的数据),变量中也只能存放指定类型的数据,程序运行过程中也不能改变变量的类型。int charge=100-price;比较 C 和 ANSI C


//C语言  int price=0;  printf("请输入金额(元):");  scanf("%d",&price);  int change=100-price;  printf("找您%d元。\n",change);
复制代码


//传统的ANSI C只能在开头的地方定义变量  int price=0;  int change=0;    printf("请输入金额(元):");  scanf("%d",&price);  change=100-price;  printf("找您%d元。\n",change);
复制代码

2.1.4 变量输入

scanf()函数,读到的结果赋值给后面的变量(注意变量前的 &)如果输入非整数(比如找钱一例中:输入字母,找我 100 元)应该怎么处理?这种情况后面再说。

2.1.5 常量 vs 变量

固定不变的数,是常数。直接写在程序里的,叫直接量。


  const int amount=100;
复制代码


其中 const 是个修饰符,加在 int 前面,给这个变量加上一个 const(不变的)属性,表示这个变量的值一旦初始化,就不能再更改了。好处:1.便于理解 2.修改的时候好找编译时会显示:read-only variable is not assignable(一般 const 的变量全大写)scanf 的空格有讲究,以后再说。输入时如果要两个数,在中间、最后敲空格或回车,计算机读到两个数字时停止当 scanf 扫描数字时输入字母,可能会出来很多奇怪的数字。(应该是 ASCII 码吧?)后面再细说。

2.1.6 浮点数

C 语言中两个整数做运算得到的结果也只能是个整数(去掉小数部分)。而 10 和 10.0 在 c 中是完全不同的两个数字,10.0 是浮点数(浮点数指小数点时可以浮动的,是计算机中表示分数和无理数的一种方式。人们用浮点数来称呼有小数点的数)(其实还有定点数。但是在 c 语言中无)当浮点数和整数放在一起运算时,计算机会自动把整数转化为浮点数计算(如:


int a,b;printf("a/b*3");//改进为a/b*3.0
复制代码


有一次尝试 printf("%f",3/2);输出的是整数。应该是先进行整数运算再以 %f 形式输出,而不是以 %f 形式输出。所以应该改进为 3/2.0


有单精度 float(%f)和双精度 double(%lf)(计算机里会有这种纯粹的整数,是因为运算快、占地小。而且日常生活中大多也是整数运算。)

2.2.1 表达式

一个表达式是一系列运算符和算子的结合,用来计算一个值运算符(operator)是指进行运算的动作,比如加/减法运算符+-算子(operand)是指参与运算的值,可能是常数/变量/一个方法的返回值



计算时间差:这里只记录分钟错位的情况(1:40 和 2:10)方法:全部记为分钟(小时*60)


  int hour1,min1;  int hour2,min2;    scanf("%d %d",&hour1,&min1);  scanf("%d %d",&hour2,&min2);    int t1=hour1*60+min1;//把小时转化为分钟单位  int t2=hour2*60+min2;    int t=t2-t1;  printf("时间差是%d小时%d分。“,t/60,t%60);//t/60是小时部分;t%60取余,是分钟部分
复制代码

2.2.2 运算符优先级

(double 输入的时候用%lf,输出的时候用%f就行)运算符优先级



(a+b,a-b 是双目;+a,-a 是单目,相当于正负号)赋值也是运算,也有结果。a=6的结果就是 a 被赋予的值,也就是 6 如 a=b=6:自右向左,a=(b=6)。


嵌入式赋值:int c=1+(b=a)缺点:不利于阅读;容易产生错误运算符的结合关系一般自左向右;单目+-和赋值=自右向左下面的式子过于复杂,不利于阅读和理解。


  result=a=b=3+c;  result=(result=result*2)*6*(result=3+result);
复制代码


所以应该把它拆开来计算。(C 语言没有幂次,所以只能一个个乘。)

2.2.3 交换变量

交换 a 和 b 的值(a=6,b=5)错误示例


a=b;b=a;
复制代码


程序表达的是顺序执行的动作,而不是关系.所以这样做先把 b 赋给 a,然后再把 a 赋给 b,都是 5.方法:再找一个变量 c,c=a 储存一下 a 的值,然后 a=b,b=c


c=a;a=b;b=c;
复制代码


断点



DEV C++中,在左边数字那里点击一下,然后程序运行时就会在这一行停止。



运行也只能到这一行点下一行,就会运行到下一行。这样可以方便排 bugC语言:使用Dev C++断点调试

2.2.4 复合赋值

a+=5表示a=a+5(注意两个运算符之间无空格)类似有-=*=/=a*=b+5表示a=a*(b+5),如果想先算a=a*b记得加括号)INC 递增、DEC 递减运算符:++--:单目运算符,只能有一个算子,这个算子还只能是变量(如a++后缀形式,++a前缀形式)让该变量+1/-1;a++运算式的值是 a+1 以前的值;++a运算式的值是 a+1 以后的值。无论哪个,a 的值都+1 了



++--可以单独使用,但不要把它组合进表达式,复杂。

3.0.1 PAT 再解释

是 Program Ability Test 的简写。


  1. 看样例数据和看题目一样重要;

  2. 不要交互地输出,题目要求输出什么就输出什么,不要画蛇添足,一个空格不对都不算对);

  3. 不要检查输入,题目只会输入定义域范围内的数字;

  4. 严格遵守输出的格式;

  5. scanf 里不要乱输什么东西(?)


int a/b;如果后面是小数,c 语言会强制类型转换为整数。但以后学习 c++或 java 是不可以的,要记得类型转换。

发布于: 刚刚阅读数: 4
用户头像

泾箐

关注

还未添加个人签名 2022.08.02 加入

CSDN用户名: 萨科塔资深干员 自己转自己的文章hhh

评论

发布
暂无评论
C语言_2 变量_c_泾箐_InfoQ写作社区