lpx9393 发表于 2020-1-13 12:07:27

为什么这里的_Bool提示错误,应该没打错吧

#include <stdio.h>

int main()
{
        printf("int = %d\n", sizeof(int));
        printf("short int = %d\n", sizeof(short int));
        printf("long int = %d\n", sizeof(long int));
        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;
}

人造人 发表于 2020-1-13 12:14:18

你觉得我们知道提示了什么错误吗?

jackz007 发表于 2020-1-13 12:17:58

   bool 输于 C++ 数据类型,把源代码文件的扩展名从 ".c" 改成 ".cpp" 再编译试试呢。

人造人 发表于 2020-1-13 13:24:20

jackz007 发表于 2020-1-13 12:17
bool 输于 C++ 数据类型,把源代码文件的扩展名从 ".c" 改成 ".cpp" 再编译试试呢。

_Bool是C99新增加的关键字

sunrise085 发表于 2020-1-13 13:36:45

本帖最后由 sunrise085 于 2020-1-13 14:08 编辑

不知道你运行程序的时候出现了什么错误提示,我看出来的程序错误有三处。
1、_Bool类型在C语言中不是直接用的,而且以前的版本中是没有的。需要用的时候要#include <stdbool.h>,若写上这个头文件还是有错误的话,那就是版本问题了。
2、_Bool打印这一行中sizeof前的逗号写成了分号。
3、long double 打印这一行中的sizeo前丢失了一个逗号。

楼下刚刚把你的程序中的waring也修改了。sizeof函数的返回值是long unsigned int,printf的时候不是%d,而是%lu。

注意!!以后提问问题,请把问题写全,你这样只贴出代码,不贴出错误提示,我们怎么知道你遇到了什么问题呢。

人造人 发表于 2020-1-13 13:59:50

sunrise085 发表于 2020-1-13 13:36
不知道你运行程序的时候出现了什么错误提示,我看出来的程序错误有三处。
1、_Bool类型在C语言中不是直接 ...

2和3是真的没有看出来


_Bool是C99新增加的关键字

#include <stdio.h>

int main(void)
{
        printf("_Bool: %lu\n", sizeof(_Bool));
        return 0;
}


$ gcc -o main main.c
$ ./main
_Bool: 1
$

sunrise085 发表于 2020-1-13 14:06:41

人造人 发表于 2020-1-13 13:59
2和3是真的没有看出来




你这个把他的程序中的waring也修改掉了呢。我都懒得去修改了。sizeof的返回值是long unsigned int,printf的时候是%lu。

lpx9393 发表于 2020-1-13 14:10:34

sunrise085 发表于 2020-1-13 13:36
不知道你运行程序的时候出现了什么错误提示,我看出来的程序错误有三处。
1、_Bool类型在C语言中不是直接 ...

好的谢谢,我下次注意

2技能封走位 发表于 2020-1-13 19:47:10

弱弱的说一句 _Bool是C99新增的,老版本没有是正常的,而头文件,身为一个关键词要什么头文件,除非你要要到他的别名bool,因为bool是定义在stdbool.h里的,另外上面几个大佬说的无符号长整型在C中用%d输出问题也不大吧,楼主要是有兴趣可以看看C PRIMER PLUS的第147有布尔类型的详细解释
页: [1]
查看完整版本: 为什么这里的_Bool提示错误,应该没打错吧