**已关闭。**此问题不符合Stack Overflow guidelines。目前不接受答复。
这个问题似乎不是关于在help center定义的范围内编程。
2天前关闭。
Improve this question
我正在学习C,我发现++
运算符可能有更高的转换优先级,但这对我来说很奇怪!
下面是我的代码:
#include <stdio.h>
#define SUFF 18
#define PROM 1
#define BOCC 0
int main(int argc, char* argv[])
{
int v1, v2;
float ris1, tmp;
int ris2, ris3;
scanf("%d", &v1);
scanf("%d", &v2);
if (v1 >= SUFF && v2 >= SUFF)
ris3 = PROM;
else
ris3 = BOCC;
ris1 = ((float)v1 + v2) / 2;
tmp = ris1 - (int)ris1;
if (tmp >= 0.5)
ris2 = (int)ris1 + 1;
else
ris2 = (int)ris1;
printf("%d %d\n", ris2, ris3);
return 0;
}
我指的是这一行:
ris2 = (int)ris1 + 1;
输入:18 19输出:19 1正确!
如果我把它改成这样:
ris2 = (int)ris1++;
输出变为:18 1错误!
我以为两个密码的结果都一样。
1条答案
按热度按时间b4lqfgs41#
ris2 = (int)ris1++;
,(后增量-增量稍后发生)类似于它不像
ris2 = (int)ris1 + 1;
。ris2 = (int)++ris1;
,(预增量)类似于这就像
ris2 = (int)ris1 + 1;
期望ris1
也是递增的。(int)
转换与此问题无关。