类型支持

来自cppreference.com
< c

参阅类型系统综述语言定义的算术类型

基本类型

额外基本类型及便利宏

在标头 <stddef.h> 定义
sizeof 运算符返回的无符号整数类型
(typedef)
两个指针相减返回的有符号整数类型
(typedef)
预定义空指针常量 nullptr 的类型
(typedef)
实现定义的空指针常量
(宏常量)
对齐要求不小于任何其他标量类型的类型
(typedef)
从指定结构体类型的起始到指定成员的字节位移
(宏函数)
在标头 <stdbool.h> 定义
bool
(C99)(C23 中移除)
便利宏,展开成 _Bool
(关键词宏)
true
(C99)(C23 中移除)
展开成整数常量 1
(宏常量)
false
(C99)(C23 中移除)
展开成整数常量 0
(宏常量)
__bool_true_false_are_defined
(C99)(C23 中弃用)
展开成整数常量 1
(宏常量)
在标头 <stdalign.h> 定义
alignas
(C11)(C23 中移除)
便利宏,展开成关键词 _Alignas
(关键词宏)
alignof
(C11)(C23 中移除)
便利宏,展开成关键词 _Alignof
(关键词宏)
__alignas_is_defined
(C11)(C23 中移除)
展开成整数常量 1
(宏常量)
__alignof_is_defined
(C11)(C23 中移除)
展开成整数常量 1
(宏常量)
在标头 <stdnoreturn.h> 定义
noreturn
(C11)(C23 中弃用)
便利宏,展开成 _Noreturn
(关键词宏)

定宽整数类型 (C99 起)

数值极限

注解

truefalse 的类型为 int 而非 _Bool

程序可以解除定义,并且可以在之后重新定义宏 booltruefalse 。然而这种能力是一项弃用的特性。

(C99 起)
(C23 前)

truefalse 的类型为 boolbool_Booltruefalse 的任何一个是否实现为预定义宏是未指定的。

booltruefalse (但不含 _Bool )被定义为预定义宏,则程序可以解除定义,并且可以在之后重新定义它。

(C23 起)

示例

#include <stdio.h>
#include <stdbool.h>
#include <stdalign.h>
 
int main(void)
{
    printf("%d %d %d\n", true && false, true || false, !false);
    printf("%d %d\n", true ^ true, true + true);
    printf("%zu\n", alignof(short));
}

可能的输出:

0 1 1
0 2
2

引用

  • C17 标准(ISO/IEC 9899:2018):
  • 7.15 Alignment <stdalign.h> (第 196 页)
  • 7.18 Boolean type and values <stdbool.h> (第 210 页)
  • 7.19 Common definitions <stddef.h> (第 211 页)
  • 7.23 _Noreturn <stdnoreturn.h> (第 263 页)
  • 7.31.9 Boolean type and values <stdbool.h> (第 332 页)
  • C11 标准(ISO/IEC 9899:2011):
  • 7.15 Alignment <stdalign.h> (第 268 页)
  • 7.18 Boolean type and values <stdbool.h> (第 287 页)
  • 7.19 Common definitions <stddef.h> (第 288 页)
  • 7.23 _Noreturn <stdnoreturn.h> (第 361 页)
  • 7.31.9 Boolean type and values <stdbool.h> (第 456 页)
  • C99 标准(ISO/IEC 9899:1999):
  • 7.18 Boolean type and values <stdbool.h> (第 253 页)
  • 7.19 Common definitions <stddef.h> (第 254 页)
  • 7.26.7 Boolean type and values <stdbool.h> (第 401 页)
  • C89/C90 标准(ISO/IEC 9899:1990):
  • 4.1.5 Common definitions <stddef.h>

参阅