我遇到了一个我写的程序的问题。程序进入了一个if语句,但实际上不应该进入。 我有两个变量:
size_t len = 5;
int tmp = -1;
当我执行以下操作时:
if (tmp > len)
ft_putstr("this is crazy");
我打印出了“这太疯狂了,因为-1对我来说比5小!好的,好的。所以我在我最喜欢的网站上看到了这个。
尝试以下操作:
printf("%zu", tmp)
我看到一个很大的正数。好吧!这可能是我的程序进入上面的if条件语句的原因,但是我该如何使它不进入if条件语句呢?谢谢。
size_t
是无符号整数类型,所以当将其与有符号整数类型进行比较时,会执行无符号比较。 - Tom Karzesif (tmp > 0 && tmp > len)
。 - user3386109printf("%zu", tmp);
引起未定义行为。对于printf
,使用正确的格式说明符取决于您。 - M.M