鱼C论坛

 找回密码
 立即注册
查看: 2854|回复: 7

[已解决]sizeof

[复制链接]
发表于 2022-3-20 21:46:56 | 显示全部楼层 |阅读模式

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

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

x
#include <stdio.h>

int main()
{
    int i;
    char j;
    float k;

    i = 123;
    j = 'c';
    k = 3.14;

    printf("size of int is %lu\n",sizeof(int));
    printf("size of short int is %lu\n",sizeof(short int));
    printf("size of long int %lu\n",sizeof(long int));
    printf("size of long long int is %lu\n",sizeof(long long int));
    printf("size of i is %lu\n",sizeof i);
    printf("size of char is %lu\n",sizeof(char));
    printf("size of j is %lu\n",sizeof j);
    printf("size of float %lu\n",sizeof(float));
    printf("size of k is %lu\n",sizeof k);
    printf("size of double is %lu\n",sizeof(double));
    printf("size of long double is %lu\n",sizeof(long double));
    printf("size of _Bool %lu\n",sizeof(_Bool));
    printf("size of enum is %lu\n",sizeof(enum));

    return 0;
}


输出:
error: type name requires a specifier or qualifier
    printf("size of enum is %lu\n",sizeof(enum));
                                               ^
数据类型.c:28:2: error: expected '}'
}
^
数据类型.c:4:1: note: to match this '{'
{
^
3 errors generated.
最佳答案
2022-3-20 22:04:29
Weabu 发表于 2022-3-20 22:01
这是干嘛的
enum不是枚举类型吗
和_Bool,char不是一样的吗

enum hahaha,
hahaha 才是枚举类型

enum 类似于 define 或 typedef
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-3-20 21:59:34 | 显示全部楼层
#include <stdio.h>

int main()
{
    int i;
    char j;
    float k;
    enum hahaha{one, two, three}hahaha; // <------- 注意这里
    i = 123;
    j = 'c';
    k = 3.14;
    printf("size of int is %lu\n",sizeof(int));
    printf("size of short int is %lu\n",sizeof(short int));
    printf("size of long int %lu\n",sizeof(long int));
    printf("size of long long int is %lu\n",sizeof(long long int));
    printf("size of i is %lu\n",sizeof i);
    printf("size of char is %lu\n",sizeof(char));
    printf("size of j is %lu\n",sizeof j);
    printf("size of float %lu\n",sizeof(float));
    printf("size of k is %lu\n",sizeof k);
    printf("size of double is %lu\n",sizeof(double));
    printf("size of long double is %lu\n",sizeof(long double));
    printf("size of _Bool %lu\n",sizeof(_Bool));
    printf("size of enum is %lu\n",sizeof(hahaha)); // <------- 注意这里

    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-20 22:01:52 | 显示全部楼层

这是干嘛的
enum不是枚举类型吗
和_Bool,char不是一样的吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-20 22:04:29 | 显示全部楼层    本楼为最佳答案   
Weabu 发表于 2022-3-20 22:01
这是干嘛的
enum不是枚举类型吗
和_Bool,char不是一样的吗

enum hahaha,
hahaha 才是枚举类型

enum 类似于 define 或 typedef
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-20 22:12:28 | 显示全部楼层
傻眼貓咪 发表于 2022-3-20 22:04
enum hahaha,
hahaha 才是枚举类型

枚举类型定义的作用是什么
不是可以直接定义枚举变量吗
那为什么不省去定义枚举类型直接定义枚举变量
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-20 22:23:46 | 显示全部楼层
Weabu 发表于 2022-3-20 22:12
枚举类型定义的作用是什么
不是可以直接定义枚举变量吗
那为什么不省去定义枚举类型直接定义枚举变量

其实枚举平常很少用到,我看了无数大佬的代码,几乎 1000 个代码里,可能只有一俩个代码有用到:
举例 A:
#include <stdio.h>

#define one 1
#define two 2
#define three 3
#define four 4
#define five 5

int main() {
        return 0;
}
举例 B:
#include <stdio.h>
enum number {one, two, three, four, five} number;

int main() {
        return 0;
}

看出 A 和 B 的差别吗?基本用处就这样。(因为枚举只能是整型,所以好像没有什么用)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-20 22:31:01 | 显示全部楼层
傻眼貓咪 发表于 2022-3-20 22:23
其实枚举平常很少用到,我看了无数大佬的代码,几乎 1000 个代码里,可能只有一俩个代码有用到:
举例 A ...

我知道用处,我就是想问问可以通过以下三种方式来定义枚举变量

1、先定义枚举类型,再定义枚举变量

enum DAY
{
      MON=1, TUE, WED, THU, FRI, SAT, SUN
};
enum DAY day;
2、定义枚举类型的同时定义枚举变量

enum DAY
{
      MON=1, TUE, WED, THU, FRI, SAT, SUN
} day;
3、省略枚举名称,直接定义枚举变量

enum
{
      MON=1, TUE, WED, THU, FRI, SAT, SUN
} day;

就是想问下前两种有啥用处,存在必有其道理吧,要不然只有第三种不就好了

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

使用道具 举报

发表于 2022-3-20 22:42:36 | 显示全部楼层
Weabu 发表于 2022-3-20 22:31
我知道用处,我就是想问问可以通过以下三种方式来定义枚举变量

1、先定义枚举类型,再定义枚举变量

第一种就如我刚才说的,hahaha 才是枚举类型,这里的 DAY 就好象 int、float、char 一样是类型,而 day 就好象 x, y, z, a, b, c 一样是变量

第二种就是第一种的省略版本
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-28 17:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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