138得票7回答
为什么 "sizeof(a ? true : false)" 的输出是四个字节?

我有一小段关于使用三元运算符的 sizeof 运算符的代码:#include <stdio.h> #include <stdbool.h> int main() { bool a = true; printf("%zu\n", sizeof(bool)...

129得票7回答
为什么在C语言中auto a=1;可以编译通过?

代码:int main(void) { auto a=1; return 0; } 当文件扩展名为.c时,使用MS Visual Studio 2012编译器可以无错误编译。我一直认为如果使用.c扩展名,则应根据C语法而不是C++进行编译。此外,据我所知,自C++11以来,只有...

96得票3回答
C11中_Generic的语法和示例用法

我听说C11添加了泛型。我查了一下谷歌,看了一些文章,了解到有一个新的关键字(_Generic)等等。但我好像还是无法完全理解。 它是否类似于C#中的泛型或C ++中的模板?能否给我简要解释一下C11泛型的定义、语法和一个简单的使用示例?

94得票3回答
使用%p打印空指针是未定义的行为吗?

使用%p格式说明符打印空指针是否未定义行为?#include <stdio.h> int main(void) { void *p = NULL; printf("%p", p); return 0; } 该问题适用于C标准,而非C实现。

85得票2回答
C17是什么,语言有哪些变化?

我在查阅GCC 8的新闻时看到,他们为C语言的2017版本添加了支持(不是C++17,确实是C17),但我在互联网上找不到任何相关信息。 它是像C11一样的新ISO版本,还是GCC团队用于修复编译器中某些问题的代号?

80得票7回答
当前GCC的默认C -std标准版本是什么(特别是在Ubuntu上)?

当我要求查看cc的当前版本时,我得到了这个。$ cc --version cc (Ubuntu/Linaro 4.7.2-2ubuntu1) 4.7.2 Copyright (C) 2012 Free Software Foundation, Inc. This is free softwar...

74得票9回答
为什么“noreturn”函数会返回值?

我读了这篇关于noreturn属性的问题,这个属性用于不返回到调用者的函数。 然后我用C语言编写了一个程序。#include <stdio.h> #include <stdnoreturn.h> noreturn void func() { prin...

73得票3回答
c11中的多线程支持

新的C11标准提供了对多线程的支持。 我的问题有些多样化,但绝对可回答。 我已经看过了C11的n1570草案。 它说: 支持多个执行线程,包括改进的内存排序模型、原子对象和线程本地存储(和) 那么,什么是“改进的内存排序模型”?与C99标准相比有何变化? 我希望有人能深入探讨这些标准,并...

70得票4回答
C99中是否未指定使用联合进行类型转换,并且在C11中是否已经被指定?

Stack Overflow上一个关于获取float类型的IEEE单精度位数的问题中,有很多回答建议使用union结构进行类型转换(例如:将float的位数转换为uint32_t):union { float f; uint32_t u; } un; un.f = your_f...

67得票6回答
在C11中,匿名结构体和联合体何时有用?

C11增加了“匿名结构体和联合体”等新特性。 我搜索了一下,但没有找到一个清晰的解释来说明何时使用匿名结构体和联合体会有用。 我问这个问题是因为我不完全理解它们是什么。 我知道它们是没有名称的结构体或联合体,但我通常将其视为错误,因此我只能想象命名结构体的用途。