- 边界溢出一例
- 词法分析中的贪心法
- 以0开头的数字为八进制表示
- 单引号引起的问题
因为每次循环结束时a溢出,使得i复为0。#define N 10
int main()
{
int i;
int a[N];
printf("Begin...\n");
for(i=0;i<=N;i++)
a[i] = 0; //有可能会陷入死循环!
printf("End...\n");
return 0;
}
1、a---b等价于a-- - b而不是a - --b;
2、“y = x/*p /* p指向余数 */;”,其中“/*”为注释起始而不是除以*p。
如041=33。
1、printf('\n'); //危险!打印地址为'\n'处的字符串。
2、如下程序:
int main()
{
int i = '1234'; //MSVC与gcc均编译通过,
但若单引号内的字符大于4则会报错
printf("%x\n", i); // 0x31323334
return 0;
}
编译器将会把单引号内的字符所对应的ASCII码依次填入整型变量的4个字节中。
没有评论:
发表评论