注册 登录
编程论坛 C语言论坛

大一c语言的题

救救孩子吧! 发布于 2022-10-21 11:51, 1401 次点击
11. 若已定义x和y为double类型,则表达式x=1,y=x+3/2 的值是
A) 1               B) 2                C) 2.0                    D) 2.5
这题咋回事?🥹🥹
我应该看那节课的内容?
7 回复
#2
编程小猪2022-10-21 12:11
#include <stdio.h>
int main(){
    double x=1;
    double y;
    y=x+3/2;
    printf("%lf",y);
}
建议遇到不会的题目可以在平台上敲代码
#3
rjsp2022-10-21 13:14
我猜你疑惑的是 3/2 为什么是 1(int) 对吗?

3/2 等于 1 (int)
3.0/2.0 等于 1.5 (double)
3/2.0 和 2/3.0 都等于 1.5 (double),因为两个操作数类型不一致时,会进行类型提升。 int 与 double 进行运算,会先将 int 提升为 double
((short)3) + ((short)2) 等于 5 (int),而不是 5 (short),因为操作数类型低于int时,会将类型提升到 int

整数字面量: https://zh.
浮点字面量: https://zh.
隐式转换: https://zh.
#4
Xovery2022-10-22 01:56
2.0
double是双浮点型,小数点后应有位数
这应该是大一计原401数据类型的课
#5
菠萝吹雪2022-10-22 13:07
#include<stdio.h>
main()
{
    double x,y;
   
    x=1,y=3.0/2;
    printf("%d",y);
    return 0;
 }
为什么结果等于零呢?
#6
rjsp2022-10-22 15:52
回复 5楼 菠萝吹雪
printf("%d",y);

%d 要求后面是 int类型 或 int兼容类型,但你的y是double类型,属于“未定义行为”
#7
龙大大小2022-10-23 20:52
回复 5楼 菠萝吹雪
#include<stdio.h>
    main()
    {
        double x, y;

        x = 1, y = 3.0 / 2;
        printf("%lf", y);
        return 0;
    }
改一哈%d
#8
恶魔小猫2022-10-29 08:28
他们都讲错了
这道题应该这么做         (因为你定义的是double型所以要用%f)(如果定义的是int型才用%d)
#include"stdio.h"
main()
{
    double x,y;
    printf("%f",y);
}
1