c学习笔记

printf是一个标准库函数,用于格式化输出。
1 | printf("k=%d,k=%o,k=%x\n",k,k,k); |
这里的"k=%d,k=%o,k=%x\n"是printf函数的格式字符串,它定义了输出的格式:
%d表示以十进制整数形式输出k的值。%o表示以八进制整数形式输出k的值。%x表示以十六进制整数形式输出k的值。%u:用于打印或读取无符号十进制整数。%c:用于打印或读取字符。当打印时,它会打印字符的ASCII表示;当读取时,它会读取单个字符。%s:用于打印或读取字符串。%f、%e或%E、%g或%G:用于打印或读取。
\n是一个换行符,表示输出结束后换行。
所以,这段代码的意思是以十进制、八进制和十六进制的形式打印出变量k的值。这三个值将会分别以k=值的形式输出,每个值之间用逗号分隔,最后换行。例如,如果k的值为10,那么输出将会是k=10,k=12,k=a。这是因为10的十进制表示是10,八进制表示是12,十六进制表示是a
在C语言中,合法的变量名需要遵循以下规则:
- 变量名必须以字母(包括大写和小写字母)或下划线
_开始。 - 变量名的其余部分可以由字母、数字和下划线组成。
- 变量名是区分大小写的。也就是说,
myVariable、myvariable和MYVARIABLE是三个不同的变量。 - 变量名不能是C语言的保留字或关键字,如
int、if等。
例如,myVariable1、_temp 和 i 都是合法的变量名,而 1myVariable、my-variable 和 if 不是合法的变量名。
在C语言中,字符常量是一个单独的字符,它被包含在一对单引号 ' 中。以下是一些合法字符常量的例子:
'a':一个普通的字符'1':一个数字字符'\t':一个转义字符,代表制表符'\n':一个转义字符,代表换行符'\\':一个转义字符,代表反斜杠'\0':一个转义字符,代表空字符
注意,字符常量只能包含一个字符。例如,'ab' 不是一个合法的字符常量,因为它包含了两个字符。但是,"ab" 是一个合法的字符串常量。在C语言中,字符串常量用双引号 " 包围,可以包含多个字符。
在 C 语言中,有以下几种关系运算符:
==:检查两个操作数的值是否相等,如果相等则条件为真。!=:检查两个操作数的值是否不相等,如果不相等则条件为真。>:检查左操作数的值是否大于右操作数,如果是则条件为真。<:检查左操作数的值是否小于右操作数,如果是则条件为真。>=:检查左操作数的值是否大于或等于右操作数,如果是则条件为真。<=:检查左操作数的值是否小于或等于右操作数,如果是则条件为真。
这些运算符主要用于在各种条件语句(如 if,while)中比较变量和值。
在 C 语言中,不同的进制数有不同的表示方法:
- 十进制:默认情况下,没有前缀的数字被视为十进制数,例如
123。 - 八进制:以
0开头的数字被视为八进制数,例如023。 - 十六进制:以
0x或0X开头的数字被视为十六进制数,例如0x23或0X23。 - 二进制:在 C 语言标准中,没有直接的表示方法来表示二进制数。但是,一些编译器(如 GCC)允许使用
0b或0B开头的数字来表示二进制数,例如0b1010或0B1010。
请注意,不是所有的 C 语言编译器都支持 0b 或 0B 开头的二进制数表示法。
在 C 语言中,这些运算符的含义如下:
- 算术运算符:
+:加法运算符,用于计算两个数的和。-:减法运算符,用于计算两个数的差。*:乘法运算符,用于计算两个数的积。/:除法运算符,用于计算两个数的商。%:取余运算符,用于计算两个数相除后的余数。
- 关系运算符:
==:等于运算符,如果两个操作数相等,则条件为真。!=:不等于运算符,如果两个操作数不相等,则条件为真。>:大于运算符,如果左操作数大于右操作数,则条件为真。<:小于运算符,如果左操作数小于右操作数,则条件为真。>=:大于或等于运算符,如果左操作数大于或等于右操作数,则条件为真。<=:小于或等于运算符,如果左操作数小于或等于右操作数,则条件为真。
- 逻辑运算符:
&&:逻辑与运算符,如果两个操作数都非零,则条件为真。||:逻辑或运算符,如果两个操作数中任何一个非零,则条件为真。!:逻辑非运算符,用来反转操作数的逻辑状态。如果条件为真,则逻辑非运算符会使其为假。
- 位运算符:
&:按位与运算符,如果两个相应的二进制位都为1,则该位的结果值为1,否则为0。|:按位或运算符,如果两个相应的二进制位中至少有一个为1,则该位的结果值为1,否则为0。^:按位异或运算符,如果两个相应的二进制位值相同则为0,否则为1。~:按位取反运算符,用于翻转操作数的所有位。<<:左移动运算符,左操作数的值向左移动右操作数指定的位数。>>:右移动运算符,左操作数的值向右移动右操作数指定的位数。
- 赋值运算符:
=:简单的赋值运算符,把右边操作数的值赋给左边的操作数。+=:加和赋值运算符,把左和右的操作数相加赋值给左操作数。-=:减和赋值运算符,把左和右的操作数相减赋值给左操作数。*=:乘和赋值运算符,把左和右的操作数相乘赋值给左操作数。/=:除和赋值运算符,把左和右的操作数相除赋值给左操作数。%=:求模和赋值运算符,用右操作数对左操作数取模后把结果赋值给左操作数。
- 递增和递减运算符:
++:递增运算符,用于增加操作数的值。可以放在操作数前面(前缀)或后面(后缀)。--:递减运算符,用于减少操作数的值。可以放在操作数前面(前缀)或后面(后缀)。
- 条件运算符:
? ::条件运算符也被称为三元运算符。该运算符有3个操作数,并需要判断布尔表达式的值。如果布尔表达式的值为真,则返回?和:之间的表达式的值,否则返回:后面的表达式的值。
- 逗号运算符:
,:逗号运算符用于链接两个或更多的表达式。这些表达式从左到右依次计算,并且最后一个表达式的值作为整个逗号表达式的值。
- sizeof 运算符:
sizeof:sizeof 运算符用于获取存储其操作数所需的空间大小,以字节为单位。
scanf 函数在 C 语言中用于从标准输入(通常是键盘)读取数据。它的名字来自 “scan formatted”,意思是按照指定的格式读取输入。
scanf 函数的第一个参数是一个格式字符串,它决定了接下来要读取什么类型的数据,以及如何读取。格式字符串中的格式说明符用于指定要读取的数据的类型。以下是一些常见的格式说明符:
%d:用于读取整数。%f:用于读取浮点数。%c:用于读取字符。%s:用于读取字符串。%u:用于读取无符号整数。%ld:用于读取长整数。%lf:用于读取双精度浮点数。
除了这些基本的格式说明符,scanf 还支持一些修饰符,例如:
%3d:读取最多 3 位的整数。%5s:读取最多 5 个字符的字符串。
此外,scanf 还支持一些转义序列,例如 \n(换行符),\t(制表符)等。
scanf 函数的其他参数是一系列指针,它们指向用于存储读取的数据的变量。这些参数必须是指针,因为 scanf 需要修改这些变量的值。
例如,下面的代码会读取一个整数和一个浮点数:
1 | int i; |
在这个例子中,%d 和 %f 是格式说明符,&i 和 &f 是指向变量 i 和 f 的指针





