1 。以下语句是否表示n属于[1,10]:
if ( 1<=n<=10 );
if ( 1<=n<=10 );
答案:错误。
解释:
c语言中if(1<=n<=10)执行过程是这样的:
先判断 1<=n ,判断结果为0(假)或1(真),然后在判断(1<=n)的整体值(0或1)是否小于等于10,结果为真。
可以执行,但并不能表示n介于1到10之间的判断。
如果要执行n介于1到10之间的判断,应表示为:if( n>=1 && n<=10 ) 。
先判断 1<=n ,判断结果为0(假)或1(真),然后在判断(1<=n)的整体值(0或1)是否小于等于10,结果为真。
可以执行,但并不能表示n介于1到10之间的判断。
如果要执行n介于1到10之间的判断,应表示为:if( n>=1 && n<=10 ) 。
结论,无论怎样都会执行,所以并不能表达1到10
2 写出程序的输出结果:
int i,j,k;
i=2;j=3;
k = i*j==6;
printf("%d\n", k);
答案:1
1、关系运算符比赋值运算符高,比运算符低,先算i*j==6;成立,结果为1;再赋值,结果为1
3
写出程序的输出:
int i=1;
switch ( i%3 ) {
case 0: printf("zero");
case 1: printf("one");
case 2: printf("two");
}
答案:onetwo
没有break,switch是找到 符合表达式后 就执行后面的语句不再判断了
所以 i为0 执行case 0后的语句不再判断 所以会输出 zero one two
类似 i为1就执行case 1后的语句了 输出 one two
switch:
计算表达式的值。并逐个与其后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时,即执行其后的语句,然后不再进行判断,继续执行后面所有case后的语句。
所以 i为0 执行case 0后的语句不再判断 所以会输出 zero one two
类似 i为1就执行case 1后的语句了 输出 one two
switch:
计算表达式的值。并逐个与其后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时,即执行其后的语句,然后不再进行判断,继续执行后面所有case后的语句。