程序是这样
#include<stdio.h>
void main()
{
float x=2.5 , y=4.7 , z;
int a=7;
z=x+a%3*(int)(x+y)%2/4;
printf("f%\n",z);
}
输出的值是2.5。可我自己算应该是2.75。做个实验:
把x去掉也就成了z=a%3*(int)(x+y)%2/4,输出是0。
再把/4去掉就是z=a%3*(int)(x+y)%2,输出是1。
按照符号优先性,%和乘除是同级的,那么1/4为什么是0呢?
是不是数据定义错了?
谢谢。
參考答案:1 / 4 当然是 0。1 和 4 都是整型数(int),它们的计算结果也是整型数,所以就是 0。
你可以试试:
double a = 1 / 2; /* a = 0 */
double a = 1.0 / 2; /* a = 0.5 */