C语言中易错题

1.

C语言中易错题_第1张图片

 此题问cnt输出为多少,并不是问你最后fib得多少,实际上是说共有几次递归;

2.

C语言中易错题_第2张图片

 do while循环语句是先使用在去判断,while后的()里面为判断语句,非0均为正确,继续循环,所以为陷入无限循环

3.

 C语言中易错题_第3张图片

i++,先使用后++,所以j=1,i=2

4.

C语言中易错题_第4张图片

+ - * / 的 优先级大于赋值运算符,所以先+ - * / 在赋值运算 *=

5.

C语言中易错题_第5张图片

这道题非常异错,此时全局变量a=1,不管a在test()里怎么改变,不会影响a,只会影响test()的值,而a出了test函数,依旧全局变量 a=1

6.

C语言中易错题_第6张图片

&&必须都为真才为真,有一个为假就不能继续运行,而y=123并不是判断而是赋值,所以为4次

7. 

C语言中易错题_第7张图片

 这个代码非常巧妙地利用了后缀的自增(减)操作符
下面介绍其原理与操作符的顺序

后置++ > + > 前置++ > * & > +=

首先看到while循环条件,第一步后置加加生效,但是并没有立即使指针src++,因为符合后置加加的规律:先使用后加加。
第二步*解引用操作符生效,把src指向的字符赋值给dest指向的字符,实现了第一个字符的拷贝。
接下来后置++的自加才真正生效,src和dest指针向后跳动一个字符,一次循环结束。
重复上述的三个步骤,直至src指向了’\0’,因为’\0’的ASCII码值为0,会导致循环终止。
注意while()括号内的值为dest所指向的字符的ASCII码值。

 

8.

C语言中易错题_第8张图片

 11的二进制为:1011

10的二进制为:1010

11|10=11(1011)

9.

C语言中易错题_第9张图片

 提到整型提升也提到算术转换

10.

C语言中易错题_第10张图片

 关键点:char 的取值范围是-128~127,strlen 找‘/0’。

11.

C语言中易错题_第11张图片

结果为 无限循环 hello world。

 

你可能感兴趣的:(c语言,算法,c++)