当i达到-1时,由于整数溢出,下面的代码将产生一个段错误.如果我将"unsign int I"更改为"char I",那么它将工作得很好,但会生成一个编译器警告:"数组下标具有类型‘char’".将其声明为"int i"会很好地工作,并且不会有编译器警告,但感觉应该有警告.毕竟int也是带符号的,也可能是负数. 我的问题是,有没有一种安全、优雅、惯用的方式来用C语言编写这样的循环?
#include <stdio.h>
int main() {
unsigned int i;
char a[10] = {0};
for (i = 9; i >= 0; i--) {
printf("a[%d]: %d\n", i, a[i]);
}
return 0;
}