来源:公众号【编程珠玑】
作者:守望先生
ID:shouwangxiansheng
没想到吧,一行注释也能影响运行结果
也许你在某个段子里听说过,某行注释删掉后,程序竟然不能预期执行?真的会这样么?你还别不信。
见证“奇迹”
1//来源:公众号【编程珠玑】
2//作者:守望先生
3#include <stdio.h>
4#include <math.h>
5int main(void)
6{
7 int a = (int)sqrt(30);
8 //is sqrt(30) + 1 > 5 ??/
9 //故意让a++,你别管为什么
10 a++;
11 if(a > 5)
12 printf("sqrt(30) +1 > 5 \n");
13 else
14 {
15 printf("sqrt(30) +1 <= 5 \n");
16 }
17 return 0;
18}
编译运行:
1$ gcc -o main main.c -trigraphs
2$ ./main
3sqrt(30) +1 > 5
作为受过九年义务教育的我们,一看就知道结果是对的,毕竟 5 * 5 < 30 < 6 * 6。
但是删掉第九行,再运行:
1$ ./main
2sqrt(30) +1 <= 5
结果