D0n*_*0nK -3 c comparison unsigned warnings for-loop
for ( i= 0; i < sizeof(r)/sizeof(r[0]); ++i ){
r[i]= 0;
}
Run Code Online (Sandbox Code Playgroud)
所以这是for循环我遇到了麻烦,我怎么能重写它所以我没有得到警告:
comparison between signed and unsigned integer expressions [-Wsign-compare]
Run Code Online (Sandbox Code Playgroud)
sizeof()返回类型的无符号整数size_t.所以使用相同类型的索引.
size_t i;
for (i = 0; i < sizeof(r)/sizeof(r[0]); ++i) {
r[i] = 0;
}
Run Code Online (Sandbox Code Playgroud)
建议不要使用int size = sizeof(r)/sizeof(r[0]);.范围size_t可能大大超过正范围int.然后,分配可能会丢失很多位.
size_t是最适合索引数组变量的类型.但请记住,因为它是一些无符号整数,所以它不能代表负索引.