怎么就死循环了!

时间:2020-12-31 20:27:38

怎么就死循环了!

c语言在进行运算的时候,一个有符号整数和一个无符号整数参与运算,结果将是一个无符号数。这也是常见的无解,一不小心就写出了死循环。
当然,这里的i-DELTA直接写为i-4 是没问题的,因为4默认是有符号数,除非你加上U

#include <stdio.h>

void main(){
int i=30;
#define DELTA sizeof(int)
for(;i-DELTA>=0;i--){
printf("%d\n",i);
}
}

类似的例子在go中是行不通的,go干脆直接报错,说无符号数不能和有符号数一起运算,只能进行类型转换以后再运算。看来go还是很明智的避免了这些陷阱啊!