鱼C论坛

 找回密码
 立即注册
查看: 1960|回复: 5

[已解决]为什么sizeof(long double) 可以全部写进sizeof(),而其他不用,这里面有什么硬性吗

[复制链接]
发表于 2023-6-10 17:27:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <stdio.h>

int main()

{
        printf("int = %d\n",sizeof(int));
        printf("short int = %d\n",sizeof(short));
        printf("long int =%d\n",sizeof(long));
        printf("long long int = %d\n",sizeof(long long));
        printf("char = %d\n",sizeof(char));
        printf("_Bool = %d\n",sizeof(_Bool));
        printf("float = %d\n",sizeof(float));
        printf("double = %d\n",sizeof(double));
        printf("long double = %d\n",sizeof(long double));
       
        return 0;
}
最佳答案
2023-6-10 18:02:12
刘斩仙 发表于 2023-6-10 17:44
所以说其他sizeof()例如sizeof(short)可不可以写成sizeof(short int),sizeof(long long)写成sizeof(long  ...

是的,其他的`sizeof()`也可以写成它们本身的完整类型名,例如`sizeof(short)`可以写成`sizeof(short int)`。同样地,`sizeof(long long)`可以写成`sizeof(long long int)`。这是因为在 C 语言中,短整型(`short`)、长整型(`long`)和长长整型(`long long`)都有一个完整的形式(`short int`、`long int` 和 `long long int`),这些形式在语法上与短/长/长长整型等价,而且具有相同的大小和行为。

给个最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-6-10 17:29:26 | 显示全部楼层
你这是什么意思?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-10 17:38:03 | 显示全部楼层
在C语言中,`sizeof()`是一个运算符,用于求取给定数据类型、变量或表达式的字节数。因此,在使用`sizeof()`时,需要将要计算大小的数据类型、变量或表达式放在括号内。

对于所有的数据类型,都可以将其尺寸作为参数传递给`sizeof()`。例如,`sizeof(int)`和`sizeof(double)`都是合法的。但对于具有复杂类型规范的数据类型(如数组、指针和结构体)而言,传递整个类型规范可能会更方便。例如,`sizeof(array)`比`sizeof(int) * length`更清晰明了。

对于提到的这段代码,它中的所有`printf()`调用都使用了`sizeof()`运算符,并放置了不同的数据类型参数。在这里,可以看出每个数据类型所占据的字节数。对于大多数数据类型,由于它们都是基本数据类型,因此只需将名称作为参数传递给`sizeof()`就好了。

然而,当涉及到`long double`时,因为它的字节数相对较大,所以一些编译器可能无法正确解析带有空格的参数。而为了确保`sizeof(long double)`可正常运行,可以将整个数据类型放在圆括号中,从而确保它作为单个参数,如`sizeof(long double)`。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-6-10 17:40:32 | 显示全部楼层
不明白
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-6-10 17:44:25 | 显示全部楼层
所以说其他sizeof()例如sizeof(short)可不可以写成sizeof(short int),sizeof(long long)写成sizeof(long long int)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-10 18:02:12 | 显示全部楼层    本楼为最佳答案   
刘斩仙 发表于 2023-6-10 17:44
所以说其他sizeof()例如sizeof(short)可不可以写成sizeof(short int),sizeof(long long)写成sizeof(long  ...

是的,其他的`sizeof()`也可以写成它们本身的完整类型名,例如`sizeof(short)`可以写成`sizeof(short int)`。同样地,`sizeof(long long)`可以写成`sizeof(long long int)`。这是因为在 C 语言中,短整型(`short`)、长整型(`long`)和长长整型(`long long`)都有一个完整的形式(`short int`、`long int` 和 `long long int`),这些形式在语法上与短/长/长长整型等价,而且具有相同的大小和行为。

给个最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 18:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表