10.13 接上文 我太菜了。让我破防的小白知识

发布于 2024-10-13  1128 次阅读


现在复盘

第一题,我错了

define不是C语言的关键字

关键字是指有特殊意义的保留字。这些词是编程语言的组成部分,表示语言的基本构造或语法规则。关键字在代码中有特定的功能,不能作为标识符(如变量名、函数名等)使用,这也是它的判断条件

#define,第一天就知道了它是定义常量用,是一个预处理指令,和include <stdio.h>一个级别的!

所以不是关键字,又不是像int、if这些,你自己都可以定义一个叫define的变量


表达式sizeof(double) 是一个整型表达式

sizeof 运算符

sizeof 是一个运算符,用于计算数据类型(这个6,可以直接在后面的括号里面写int、double这些)变量所占的字节数。在这个例子中,sizeof(double) 计算的是 double 类型在内存中占用的字节数

为什么是整型表达式?

因为sizeof 运算符的返回类型是 size_t,而 size_t 可以被视为无符号整型。因此,sizeof(double) 的结果可以被用作整型值(就是说结果本来就会是非负整数),其中也包括0,因为其实intunsigned int 都包括 0


表达式 2020 + 'a' 的数据类型并不是字符型,而是整型

字符型与字符的ASCII值

在C语言中,字符常量(如 'a')实际上是它对应的 ASCII 值。在 ASCII 编码中,字符 'a' 的值是 97

第一天的东西,你又忘了!能看到a是格式说明符%c(或字符串的格式说名符%s)的功劳,而不是char、不是' '!

这是字符常量的特性,他们就是因为有ASCII值才会有字符的,所以 2020 + 97,最终将产生一个整型结果 2117

//所以还是那句话,我感觉字符(串)在整型面前就是小老弟


哥们,不满足循环条件了不就结束循环了,你还想着这个循环过后下一次又能满足循环条件呢?

拉屎一次性拉完


for(int i=0;++i<2021;i++)这个循环结束后i的值是多少

这个题真牛B

答案是2021

起初,i=0,++i<2021成立,且不管这个是否成立,i的值都变成了1

一直到i=2019,++i<2021成立,这时i=2020,仍然会执行第三个代码i++

于是,i=2020,++i<2021不成立,但是已经运行了第二行代码,虽i++不会运行,i仍然成为了2021

所以,牢记这是按照顺序结构严格执行代码块的


int a[3][4] = { {1, 0, 0, 0}, {2, 3, 0, 0}, {0, 0, 0, 0} };

这是最习惯的数据初始化,但是下面的初始化其实也是对的

int a[3][4] = { {1}, {2, 3} };
  • {1} 初始化第一个子数组,1 放在第一个位置,其余元素被设置为 0
  • {2, 3} 初始化第二个子数组,2 和 3 分别放在前两个位置,其余元素同样被设置为 0
  • 第三个子数组不进行显式初始化时,C 语言会自动将其所有元素初始化为 0 //为什么int定义时没有这么好!!!

所以,即使是:

int a[3][4] = { {1} };

也是对的,结果如下

a[0][0] = 1  
a[0][1] = 0 
a[0][2] = 0 
a[0][3] = 0 
a[1][0] = 0 
a[1][1] = 0 
a[1][2] = 0 
a[1][3] = 0 
a[2][0] = 0 
a[2][1] = 0 
a[2][2] = 0 
a[2][3] = 0 

届ける言葉を今は育ててる
最后更新于 2024-11-05