【发布时间】:2018-08-29 17:03:19
【问题描述】:
为什么这个程序会打印较短的字符串 ("paid")?
#include <stdio.h>
int main()
{
char s[] = "paid", t[] = "paviDboss";
if ((strlen(s) - strlen(t)) > 0)
printf("%s\n", s);
else
printf("%s\n", t);
}
【问题讨论】:
-
这段代码有什么问题?
-
main不返回任何内容。 -
size_t是无符号的,所以差值不能 -
@Osiris
main不必显式返回任何内容,它是唯一返回豁免值的函数。 -
@WeatherVane 我的意思是,如果
size_t映射为unsigned short,则可以对减法的结果进行签名,并且unsigned short的所有值都可以在int中表示,那么这就是整数促销将他们带到。 C 标准中没有任何内容说它不能是unsigned short- 相反,唯一说的是它不应该大于unsigned long除非必要时。
标签: c