1163028233 发表于 2021-1-4 21:05:54

运算问题

#include<stdio.h>
int main()
{
    int i = 8, j = 3;
    i /= j + 12;
    printf("%d", i);
    return 0;
}


i /= j + 12
不应该是 i = i / j + 12
也就是8/3=2,然后2+12=14吗
为什么等于0啊?

mikele 发表于 2021-1-4 21:15:40

肯定是(j+12)作为一个整体啊

mikele 发表于 2021-1-4 21:16:46

mikele 发表于 2021-1-4 21:15
肯定是(j+12)作为一个整体啊

8/15=0,没问题啊
你干脆不要这么简写了,就直接写成i=i/j+12他不香吗{:10_334:}

1163028233 发表于 2021-1-4 21:24:23

mikele 发表于 2021-1-4 21:16
8/15=0,没问题啊
你干脆不要这么简写了,就直接写成i=i/j+12他不香吗

我在做课后练习发现不对,然后自己没想明白就来问下,还有想问下
#include<stdio.h>
int main()
{
    int a = 2, b = 5, c = 0;
    double x = 1.2, y;
    y=a=b=c=x=7.2;
    printf("%lf", y);
    return 0;
}
这个结果怎么是7
不应该是7.2嘛

1163028233 发表于 2021-1-4 21:27:15

mikele 发表于 2021-1-4 21:16
8/15=0,没问题啊
你干脆不要这么简写了,就直接写成i=i/j+12他不香吗

不对啊, 写成i=i/j+12
他的结果就成了14

mikele 发表于 2021-1-4 21:29:24

1163028233 发表于 2021-1-4 21:24
我在做课后练习发现不对,然后自己没想明白就来问下,还有想问下
#include
int main()


依次赋值的话,你可以这样想#include<stdio.h>
int main()
{
    int a = 2, b = 5, c = 0;
    double x = 1.2, y;
    x=7.2;
    c=x;
    b=c;
    a=b;
    y=a;
    printf("%lf", y);
    return 0;
}
因为a,b,c都是整型变量,所以c=x,y=a都是变成不带小数点的整型数据

mikele 发表于 2021-1-4 21:31:41

1163028233 发表于 2021-1-4 21:27
不对啊, 写成i=i/j+12
他的结果就成了14

他要的答案就是14{:10_243:}

1163028233 发表于 2021-1-4 21:37:09

mikele 发表于 2021-1-4 21:31
他要的答案就是14

那为什么这样写 i /= j + 12   程序出来的是0 而不是14
按书上讲的 i = i / j + 12和i /= j + 12这两个值应该相等啊?

mikele 发表于 2021-1-4 21:40:27

1163028233 发表于 2021-1-4 21:37
那为什么这样写 i /= j + 12   程序出来的是0 而不是14
按书上讲的 i = i / j + 12和i /= j + 12   ...

第二种写法i/=j+12应该理解为i=i/(j+12),这里的j+12看作一个整体,也就是等号右边的是一个整体
第一种写法i=i/j+12就是字面意思

1163028233 发表于 2021-1-4 21:45:32

mikele 发表于 2021-1-4 21:40
第二种写法i/=j+12应该理解为i=i/(j+12),这里的j+12看作一个整体,也就是等号右边的是一个整体
第一种写 ...

明白了,谢谢
页: [1]
查看完整版本: 运算问题