发布时间:2014-06-27 11:34:44
1整数转换(包括隐式和显式(使用强制转换)),必须保证不会导致丢失或曲解数据。C99规定:a.当整数类型的值转换为另一个整数类型除了_Bool,如果该值可以被另一种类型表示,它的值是不变的。b.否则如果新类型是无符号的,则该值是通过反复增加或减去MAX+1(MAX是新类型可表述的最大值),直到该值在新类型的范围内。c.否.........【阅读全文】
发布时间:2014-06-26 14:25:25
OS;32bit ubuntu整型转换的规则:1.整形提升若变量的原型都能用int描述的话,其值范围小于INT_MAX的话就转换有符号int,其值范围大于INT_MAX的话就转换成无符号int。点击(此处)折叠或打开char c1, c2;c1 = c1 + c2 整型提升要求每个变量都提升为int大小。两个in.........【阅读全文】
发布时间:2014-06-25 16:33:16
环境:32位 ubuntu整数值可以因为异常情况(溢出,截断或符号错误)失效,导致可利用的漏洞。1.使用size_t表示一个对象的大小的所有整数值size_t为无符号整数类型。错误代码:点击(此处)折叠或打开char *copy(size_t n, char *str) {int i;if(p == NULL) {.........【阅读全文】
发布时间:2014-06-24 14:24:56
1.Do not modify constant valuesC99标准中说:若通过非const型左值修改const类型的对象,该行为是未定义。点击(此处)折叠或打开char const **cpp;char *cp;char const c = 'A';cpp = &cp; /* constraint violation */*cpp = &c; /*.........【阅读全文】
发布时间:2014-06-18 15:52:42
1.使用括号确保表达式执行顺序: 表达式:x与1相与后判断是否等于0. 错误表达式:点击(此处)折叠或打开x & 1 == 0 因为==操作符的优先级高于&,表达式会先进行(1==0)操作,最后进行(x&0)操作。 正确表示:点击(此处)折叠或打开(x & 1) == 0 .........【阅读全文】