C语言三目运算符之坑

代码片段:

#include 

int main()
{
	int a = -22;
	unsigned int b = 0;
	unsigned int c = 4294967274;
	ssize_t t =  (a == 0 ? b : a);
	ssize_t tc = a;

	printf("t = %zd tc = %zd\n", t, tc);

	return 0;
}

运行结果:
t = 4294967274 tc = -22
以为(a == 0)的条件不满足不会b的符号不会对运算结果产生影响,但实际上的确会产生影响。这就是为什么不提倡在编码中使用三目运算符的一个比较重要的原因吧,这种低级问题隐藏在浩瀚的代码中定位起来十分耗时。

你可能感兴趣的:(c语言)