怎么就死循环了!

怎么就死循环了!

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
",i);
	}
}

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

原文地址:https://www.cnblogs.com/baizx/p/5449588.html