【发布时间】:2014-07-18 14:46:19
【问题描述】:
考虑以下代码:
char foo[32] = "123456";
printf("strlen(foo) = %d\n", strlen(foo));
if ((5 - strlen(foo)) > 0)
{
//This statement prints because the comparison above returns true, why?
printf("String must be less than 5 characters, test 1\n");
}
int tmp;
if ((tmp = 5-strlen(foo)) > 0)
{
//This statement does not print and makes since
printf("String must be less than 5 characters, test 2\n");
}
正如 cmets 所指出的,我不明白为什么在与另一个值进行比较之前需要一个临时变量来存储数学计算的结果。
【问题讨论】:
-
您的
%d应该是%zu。
标签: c++ function math comparison return-value