标题:一道有趣的题,y 的值是多少?
只看楼主
buddy_zhang
Rank: 2
等 级:论坛游民
帖 子:33
专家分:24
注 册:2014-5-7
结帖率:100%
 问题点数:0 回复次数:16 
一道有趣的题,y 的值是多少?
#include <stdio.h>
#include <stdlib.h>

int main()
{
    double x,y;
    x = 1;
    y = x + 3/2;
    return 0;
}

//y的值为多少?
搜索更多相关主题的帖子: include double return 
2014-05-08 14:00
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
没看到哪里有趣  只觉得无聊而已

DO IT YOURSELF !
2014-05-08 14:10
buddy_zhang
Rank: 2
等 级:论坛游民
帖 子:33
专家分:24
注 册:2014-5-7
得分:0 
回复 2 楼 wp231957
那y等于几呢?
2014-05-08 14:14
ditg
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:16
帖 子:852
专家分:1937
注 册:2014-4-10
得分:0 
加点难度,呵呵

#include <stdio.h>
#include <stdlib.h>

int main()
{
    double x,y;
    x = 1;
    y = x + 3/2;
    printf("%d\n", y);
    return 0;
}

//y的值为多少?

梦想拥有一台龙芯3A-4000
2014-05-08 16:18
buddy_zhang
Rank: 2
等 级:论坛游民
帖 子:33
专家分:24
注 册:2014-5-7
得分:0 
回复 4 楼 ditg
y=2
2014-05-08 17:13
寂__痴
Rank: 2
等 级:论坛游民
帖 子:34
专家分:23
注 册:2014-4-25
得分:0 
y=0

C语言之路,慢慢走,慢慢领悟,才是硬道理!
2014-05-08 18:19
遗忘的三伏天
Rank: 1
等 级:新手上路
帖 子:2
专家分:2
注 册:2012-7-15
得分:0 
向0靠拢取值的吧 所以是2
2014-05-08 18:24
寂__痴
Rank: 2
等 级:论坛游民
帖 子:34
专家分:23
注 册:2014-4-25
得分:0 
我是运行了几次的,如果用%f输出就是2.000000;如果用%d来输出就是0;是为什么呢?
其他,如果用%d来输出,那么不管y被赋值什么,输出的都是0。
这是为什么?难道里面真的有什么有趣的事情?

C语言之路,慢慢走,慢慢领悟,才是硬道理!
2014-05-08 18:27
ditg
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:16
帖 子:852
专家分:1937
注 册:2014-4-10
得分:0 
回复 6 楼 寂 __ 痴
bingo!

梦想拥有一台龙芯3A-4000
2014-05-08 18:30
buddy_zhang
Rank: 2
等 级:论坛游民
帖 子:33
专家分:24
注 册:2014-5-7
得分:0 
回复 9 楼 ditg
我可以这样理解吗
(1)y是double型,最后如果是printf(“%f”,y),则y此时的值应该是2.000000;
(2)此时是printf(“%d”,y),y从double剪切成int型。
(3)由于我的电脑是i386的小端格式,因为double是8个字节,int是4个字节,所以2.000000的低4字节存储了y的低字节,也就是0000H,高字节被丢弃,最后y的值为0000H
(4)所以最后y在进行输出的时候被剪切成0000H,所以打印出来y的值为0;
9楼厉害
2014-05-08 18:51



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-431208-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.870957 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved