一、数据类型——浮点数
(一)注:
- 在C语言中两个整数运算的结果只能是整数。
- 如10和10.0在C语言中是完全不同的数。
- 10.0是浮点数。
(二)浮点数
- 浮点数:带小数点的数值。是计算机内部表达非整数(包括分数和无理数)的一种方式,人们借用浮点数表达所以带小数点的数。
- 当浮点数和整数放在一起运算时,C会将整数转化成浮点数,然后进行浮点数的运算。
(三)double
- inch是定义为int的变量,如果把int换成double,我们就把它改为double类型的浮点数变量了。
- double的意思是“双”,是“双精度浮点数”的第一个单词。
- 人们用来表示浮点数类型,除了double还有float(意思为浮点,这里指单精度浮点)。
(四)数据类型
- 整数
- int
- printf("%d",…);
- scanf("%d",…);
- 带小数点的数(浮点数)
- double
- printf("%lf",…);
- scanf("%lf",…);
二、表达式——运算符和算子,取余计算
(一)表达式
- 一个表达式是一系列运算符和算子的组合,用来计算一个值。
- 如:(整行都为表达式)。
amount=x*(1+0.33);
total=57;
count=count+1;
value=(min/2)*lastvalue;
(二)运算符和算子
- 运算符是指进行运算的动作,如加法运算符“+”。
- 算子是指参与运算的值,这个值可能是常数,也可能是变量,还可能是一个方法的返回值。
- a=b+5中,a、b、5是算子,=和+是运算符。
- 取余——%,表示取两数相除以后的余数。
(三)运算符优先级
优先级 | 运算符 | 运算 | 结合关系 | 举例 |
---|---|---|---|---|
1 | + | 单目不变 | 自右向左 | a*+b |
1 | - | 单目取负 | 自右向左 | a*-b |
2 | * | 乘 | 自左向右 | a*b |
2 | / | 除 | 自左向右 | a/b |
2 | % | 取余 | 自左向右 | a%b |
3 | + | 加 | 自左向右 | a+b |
3 | - | 减 | 自左向右 | a-b |
4 | = | 赋值 | 自右向左 | a=b |
其中:
- 单目不变(取负)我理解为类似数学中正(负)号关系。
- 单目指对一个变量操作的运算符号。
- 赋值是将右边赋给左边,a=b=6→a=(b=6)
(四)嵌入式赋值,结合关系
1、嵌入式赋值
- int c=1+(b=a);
- 不利于阅读。
- 易产生错误。
- 不推荐使用。
2、结合关系
- 一般自左向右,但单目+-和赋值=为自右向左。
- 表达式应适宜阅读理解,明显,否则易产生误解,误解如:
- result=(result=result*2)*6*(result=3+result);
三、交换变量
(一)程序是按步骤执行的
- 程序表达的是顺序执行的动作,而不是关系,例:
- a=b;b=a;
- 是依次执行的,结果使得a和b都得到b原来的值。
(二)交换
“空杯子”;“套路”
int a=1;
int b=2;
int c;
t=a;
a=b;
b=a;
想交换两杯水,只需有第三个杯子做中转就好。
四、复合赋值和递增递减
(一)复合赋值
- 5个算术运算符+-*/%可以和赋值运算符“=”结合起来,形成复合赋值运算符:“+=”、“-=”、“*=”、“/=”和“%=”。
- total+=5;即为total=total+5;
- 注:两个运算符中间不要有空格。
- 先算赋值右边式子,加减法需括号→total*=12+3;→total=total*(12+3);
(二)递增递减运算符(++)(--)
- “++”和“--”是单目运算符(目前已知优先级最高),这个算子必须是变量。
- 其作用是给变量+1或-1。
- count++;→count+=1;→count=count+1;
递增递减运算符有前缀后缀
- 前缀→变量前面,先增值后引用。y=++x;→y=x;x=x+1;(即y=曾经的x;现在的x=曾经的x+1)
- 后缀→变量后面。先引用后增值。y=x++;→x=x+1;y=x;(即y=x+1)
- 可以单独使用,但不要组合进表达式。
表达式 | 运算 | 表达式的值 |
---|---|---|
count++ | 给count加1 | count原来的值 |
++count | 给count加1 | count+1以后的值 |
count-- | 给count减1 | count原来的值 |
--count | 给count减1 | count-1以后的值 |