C尖笔记
- putchar如果成功输出了字符,会返回这个字符。否则返回EOF。
- 如果for的循环体语句中没有使用continue语句,则以下for语句和while语句等价。
for (表达式1; 表达式2; 表达式3)
for的循环体语句
表达式1;
while (表达式2) {
for的循环体语句;
表达式3;
}
用了continue另当别论!
- 类型转换,大转小直接截断低位;小转大:无符号整数直接高位复制0,有符号复制符号位(最高位),这样的结果就是数字的值不变,变成了更大字节下的原值的补码。
浮点数的截断也是类似的。
- 注意
while
循环有时候没有自加。
若变量已正确定义,以下while循环结束时,i的值为11。
i = 1;
while (i <= 10){
printf("%d\n", i);
}
这个是错的。
- 设变量已正确定义,选项( )与以下程序段不等价。
switch(op){
case '+': printf("%d", value1 + value2);
default: printf("Error");
case '-': printf("%d", value1 - value2);
}
A.
if(op == '+'){
printf("%d", value1 + value2);
printf("Error");
}else if(op != '-'){
printf("Error");
}
printf("%d", value1 - value2);
这俩等价……
-
- 当 switch在循环内部时在循环内部的 switch语句中使用 continue会跳过当前循环迭代的剩余部分,直接开始下一次循环迭代。
- 当 switch不在循环中时,如果 switch语句不在任何循环内部,使用 continue会导致编译错误,因为 continue只能在循环结构中使用。
break
在switch里面只是跳出switch,但是continue是跳到循环下一步。
for(i = 11; i <= 20; i++){
for(i = 1; i <= 10; i++){
printf( "%4d", i );
}
printf("\n");
}
看起来好像里面的i会覆盖掉外面的定义变成局部变量,不会死循环,对吧?
实际上,它是一个i,没有重新定义,所以会死循环。