From 5ddeb3b2775330a63e8a3dbdf847f1ed0be37962 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=AE=B8=E5=A4=A7=E4=BB=99?= <1900919313@qq.com> Date: Sat, 17 Aug 2024 14:34:52 +0800 Subject: [PATCH] c --- docs/notes/01_c-basic/03_xdx/index.md | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/docs/notes/01_c-basic/03_xdx/index.md b/docs/notes/01_c-basic/03_xdx/index.md index 84eb6ca..77f8e10 100644 --- a/docs/notes/01_c-basic/03_xdx/index.md +++ b/docs/notes/01_c-basic/03_xdx/index.md @@ -70,13 +70,13 @@ > > * ① 数据类型在内存中占用的存储单元(字节数),就称为该数据类型的长度(步长),如:short 占用 2 个字节的内存,就称 short 的长度(步长)是 2。 > -> * ② C 语言并没有严格规定各种数据类型在内存中所占存储单元的长度,只做了宽泛的限制: +> * ② C 语言并没有严格规定各种整数数据类型在内存中所占存储单元的长度,只做了宽泛的限制: > > * short 至少占用 2 个字节的存储单元。 > * int 建议为一个机器字长(指计算机的处理器在一次操作中能够处理的二进制数据的位数,机器字长是处理器的“字”长度,它决定了处理器在一个时钟周期内能够处理的数据量,如:早期的计算机的处理器通常是 8 位的机器字长,意味着处理器一次只能处理 8 位(二进制)数据;之后的计算机的处理器有 16 位的机器字长,意味着处理器一次可以处理 16 位的数据;再之后计算机的处理器有 32 位或 64 位的机器字长,意味着处理器一次可以处理 32 位或 64位的数据)。即:32 位环境下 int 占用 4 个字节的存储单元,64 位环境下 int 占用 8 个字节的存储单元。 > * short 的长度(步长)不能大于 int,long 的长度(步长)不能小于 int,long long 不能小于 long。 > -> * ③ 那么,各种数据类型在内存中所占存储单元的长度的公式就是 `2 ≤ sizeof(short) ≤ sizeof(int) ≤ sizeof(long) ≤ sizeof(long long)`,具体的存储空间由编译系统自行决定。其中,`sizeof` 是测量类型或变量、常量长度的`运算符`。 +> * ③ 那么,各种整数数据类型在内存中所占存储单元的长度的公式就是 `2 ≤ sizeof(short) ≤ sizeof(int) ≤ sizeof(long) ≤ sizeof(long long)`,具体的存储空间由编译系统自行决定。其中,`sizeof` 是测量类型或变量、常量长度的`运算符`。 > [!IMPORTANT] > @@ -1108,14 +1108,30 @@ int main() { * 示例: ```c +#include #include - +#include int main() { + // 禁用 stdout 缓冲区 + setbuf(stdout, NULL); + + char input[10]; bool handsome = false; + printf("帅不帅[false 丑,true 帅]: "); - scanf("%d", &handsome); + scanf("%s", input); // 使用 %s 读取字符串 + + // 将输入字符串转换为布尔值 + if (strcmp(input, "true") == 0) { + handsome = true; + } else if (strcmp(input, "false") == 0) { + handsome = false; + } else { + printf("无效输入!\n"); + return 1; + } if (handsome) { printf("你真的很帅!!!");