1.
#include<stdio.h>
int main(){
int x1 = 28.3%3.1;
printf("x1 = %d",x1);
return 0;
}
% 运算不能有double(float)
2.
#include<stdio.h>
int main(){
int i = 1, j = 1, k =2;
if ((j++||k++)&&i++){
printf("%d,%d,%d",i,j,k);
}
return 0;
}
结果:2,2,2
|| 或操作,|| 为界将表达式分为两部分,他会先算前一部分,如果前一部分为真,他将停止运算,如果为假,他才会算第二部分
&&且操作 ,&&为界将表达式分为两部分,他会先算前一部分,如果前一部分为假,他将停止运算,如果为真,他才会算第二部分
3.
i= j = 6
i += j++
i = 12,j = 7
i++,表示先取i的值进行表达式计算或函数调用,最后加法再计算 i=i+1;
++i,表示先加法计算i=i+1,然后在进行表达式计算或函数调用。
4.
a = 1,b = 2,c = 3
if(c>b>a)
= if(0)
c>b 为真,值为1
1>c 为假,值为0
if(0)
5.
以下合法的C语言赋值语句是?
A.a=b=58 B.k=int(a+b) C.a=58,b=58 D.--i;3
A项 丢失分号
B.k=int(a+b) 改为 k=(int) (a+b); 才对
C. a=58,b=58 改为 int a=58,b=58; 声明加初始化才对
6.逗号表达式
x=5*8, 6+9
先把 x 赋值为 40,表达式的值为 15
逗号表达式的优先级是最低的 (也就是说赋值运算符 ‘=’ 都比逗号表达式优先级高)。
int a=(2*6,4+8,55);
请问a=?
答:先计算括号内的逗号表达式的值,该逗号的值为55,再把55赋值给a,所以a=55
int a=5;
a=(a=2*3,a*4),a+10;
请问a=?
原来a=24已经完成了计算(此时表达式变成a+10),
之后又算了一步没用的操作。
int a=0,b=0,x=0,y=0;
//逗号表达式,结合顺序是从左至右,用来顺序求值,
//完毕之后整个表达式的值是最后一个表达式的值
a=(x=7,y=x%5,y+8);//7%5=2,此时y=2了,所以2+8=10 那么a=10