bild 发表于 2021-9-24 17:20:11

数据类型那节课课上代码的改版,该代码可以运行,但是结果不一样(附图

#include <stdio.h>

#define i 123
#define j 'c'
#define k 3.14

int main()
{
        printf("size of int is %d\n",sizeof(int));
        printf("size of i is %d\n",sizeof(i));
        printf("size of char is %d\n",sizeof(j));
        printf("size of j is %d\n",sizeof(float));
        printf("size of k is %d\n",sizeof k);
        return 0;
}

bild 发表于 2021-9-24 17:22:20

图放不了,放结果
size of int is 4
size of i is 4
size of char is 4
size of j is 4
size of k is 8

jhq999 发表于 2021-9-24 20:35:32

size of int is 4
size of i is 4
size of char is 1
size of j is 4
size of k is 8

bild 发表于 2021-9-25 11:19:34

jhq999 发表于 2021-9-24 20:35
size of int is 4
size of i is 4
size of char is 1


我主要的问题在k作为单精度浮点型变量,为什么k的字节是8不应该是4吗
j作为字符型变量,但是为啥字节大小不是1

bild 发表于 2021-9-25 11:25:25

这是修改过的代码,求出的结果是一样的

本帖最后由 bild 于 2021-9-25 11:28 编辑

#include <stdio.h>

#define i 123//对ijk使用宏定义
#define j 'c'
#define k 3.14

int main()
{
        printf("size of int is %d\n",sizeof(int));//计算int的字节大小
        printf("size of i is %d\n",sizeof(i));//计算i的字节大小
        printf("size of char is %d\n",sizeof(char));//计算字符型变量的字节大小
        printf("size of j is %d\n",sizeof(j));//计算j的字节大小
        printf("size of float is %d\n",sizeof(float));//计算单精度浮点型变量的大小
        printf("size of k is %d\n",sizeof k);//计算k的变量大小
        return 0;
}

bild 发表于 2021-9-25 11:26:43

我主要的问题在k作为单精度浮点型变量,为什么k的字节是8不应该是4吗
j作为字符型变量,但是为啥字节大小不是1

jhq999 发表于 2021-9-25 12:46:49

j作为字符型变量,但是为啥字节大小不是1
我vs输出是1
#define k 3.14
为啥你认为 k是单精度浮点型变量

bild 发表于 2021-9-25 13:28:40

jhq999 发表于 2021-9-25 12:46
j作为字符型变量,但是为啥字节大小不是1
我vs输出是1
#define k 3.14


我这用的dev运行的
k是3.14,小数点后的数字太少,所以不是应该是单精度吗
区分单精度和双精度的标准不是小数点后数字多少吗
这个结果是代表我认为的单精度和双精度概念错误,还是因为我没有将k定义为float,所以系统自动帮我判断为双精度浮点型了吗

jhq999 发表于 2021-9-25 13:50:14

bild 发表于 2021-9-25 13:28
我这用的dev运行的
k是3.14,小数点后的数字太少,所以不是应该是单精度吗
区分单精度和双精度的标准不 ...

不同编译器可能都不一样
页: [1]
查看完整版本: 数据类型那节课课上代码的改版,该代码可以运行,但是结果不一样(附图