首页 > 代码库 > C/C++ Bug&Pitfalls

C/C++ Bug&Pitfalls

  这篇文章也是长期性的一个积累,对于本人个性化的一些使用C/C++造成的失误进行记录。

  1)Printf 中格式化使用造成的失误:

  

?
1
2
3
4
5
6
7
8
9
10
int
main() {
    char* str="-1234";
         
    printf("string is %lld\nstr length is %d\n", str2Number(str), strlen(str));
    //printf("string is %ld\nstr length is %d\n", str2Number(str), strlen(str));
 
    getchar();
    return 0;
}

 

   如上,str2Number返回的是long long 类型,如果使用注释掉的那一种printf的话,则后者显示为-1,尽管strlen(str)值仍为5。

  2) 在使用赋值操作,比如:

?
1
2
int num = 0xFFFFFFFF
int num = 0x80000001

   所赋的值都是补码,而不是源码或者反码。