1进制转化1.1十进制与二进制相互转化十进制数除以2将最后得到的数作为第一位后面的余数从下往上进行补齐就得到二进制。将二进制数从右往左数从零开始数将非零数对应的第几位作为2的次方再乘以这个数最后分别相加就得到十进制。1.2十进制与八进制相互转化十进制数除以8将最后得到的数作为第一位后面的余数从下往上进行补齐就得到二进制。将二进制数从右往左数从零开始数将非零数对应的第几位作为8的次方再乘以这个数最后分别相加就得到十进制。1.3十进制与十六进制相互转化十进制数除以16将最后得到的数作为第一位后面的余数从下往上进行补齐就得到二进制。将二进制数从右往左数从零开始数将非零数对应的第几位作为16的次方再乘以这个数最后分别相加就得到十进制。注余数为两位数从10开始用A表示1.4二进制转八进制二进制数每三位作为一组不足三位补零从右往左每三位由十进制转化方法转为八进制再分别组合就得到八进制1.5二进制转十六进制二进制数每四位作为一组不足四位补零从右往左每四位每位非零数对应的位数为2的次方由次方数乘以对应非零数的转化方法转为十六进制注结果为两位数从10开始用A表示再分别组合就得到十六进制当然也可以用电脑自带转化计算器这里只是方法。2.计算机存储单位1B或Byte等于八个字节bit字节为最小单位比如0或1。1KB1024B3.变量的定义与分类4个存储类型说明符auto自动变量register寄存器变量static静态变量extern外部变量存储类型数据类型变量名初始值变量的命名规则只能由数字字母下划线组成不能以数字开头长度不超过63字符变量名区分大小写变量名不能使用关键字变量名不能包含和#等符号3.变量的作用域局部作用域变量仅在某个特定的函数代码块中可见和可用。其中的变量被称为局部变量默认auto。自动变量通常是局部变量的生命周期从函数或代码块开始时创建到函数或代码块结束时销毁。在函数外部是无法直接访问这些局部变量的。全局作用域变量在整个程序内都可见。其中的变量被称为全局变量extern。初始值为0。4.使用变量注意1.变量必须先声明后使用2.变量一旦声明就不能更改其类型3.同一作用于内不能命名重名的变量4.变量屏蔽小作用域里的同名变量会把外面大作用域的变量 “盖住”暂时看不见外面的。5.注意变量的取值范围和初始化占用空间。5.整型变量int原码第一位表示符号即1表示负数其余位表示值。反码正数的反码是其本身负数反码是在原码的基础上符号位不变其余位取反。补码正数的补码是其本身负数补码是在原码的基础上符号位不变其余位取反最后一位加1。这是计算机处理中负数的标准方式。 补码对所有整数运算都适用无论它们是否有符号。补码表示的整数范围比原码表示的范围更大。因为补码的最高位不仅表示符号而且能够有效利用负数和正数的空间。例如假设一个8位系统原码表示的整数范围是-127到127而补码表示的整数范围是-128到127。补码使得能够表示更多的负数值因此它的表示范围更大而不是更小。6.整型变量分类1. 按符号分有符号 signed可存正负默认省略 signed无符号 unsigned只存非负数2. 按长度分short短整型int基本整型long长整型long long长长整型3. 完整 8 种写法signed short、unsigned shortsigned int、unsigned intsigned long、unsigned longsigned long long、unsigned long long4. 32 位常用范围short (2 字节)-32768~32767int (4 字节)-2147483648~2147483647long long (8 字节)范围最大unsigned int类型表示无符号整数因为是用32个位表示的所以是0~2^32-1即从0到429496729532位系统下。unsigned int没有符号位可以表示的最大值比int大。补充大端和小端指的是数据在内存中存储时字节的排列顺序。大端模式高字节存储在低地址低字节存储在高地址。小端模式低字节存储在低地址高字节存储在高地址。5.查看自己电脑上代码上这个变量占了几个字节#includestdio.h int main(void) { int i1; printf(%d\n,seziof(i)); }signed和unsigned相同点在一段存储空间上数字计算方法一样不同点在混合判断时格式转化不同7.转换规则较低级别向较高级别转化防止数据丢失char(8位)short int(16位)int (32位)long long(64位)signedunsignedintfloatdouble8.printf表示对于整型变量printf支持以下常用的格式化符号%d或%i用于输出有符号的十进制整数%u用于输出无符号的十进制整数%o用于输出八进制整数%x或%X用于输出十六进制整数%x使用小写字母%X使用大写字母在printf中还可以使用修饰符指定不同大小的整型变量%h用于表示短整型short%l用于表示长整型long%ll用于表示长长整型long long可以通过修饰符来控制输出的宽度、对齐方式、填充字符等宽度指定输出字段的最小宽度。-左对齐默认情况下输出是右对齐的使用-可以使其左对齐。0零填充用零来填充空白位置而不是默认的空格。9.浮点型变量floatfloat 4个字节double 8个字节long double 1216个字节在C语言中浮点型常量默认为double型可用F或f后缀标记为float型用L或l标记为long double型。float类型通常采用科学计数法存储数据其中包括符号位、指数部分和尾数部分。赋值时如果给浮点型赋值整数系统会自动为整数补上小数点。如果给整数型变量赋值了小数系统会直接将小数舍去变为整数注意这里是舍去而不是四舍五入。在有乘除的运算中只要有一个数是浮点数系统会自动把其他整数转换成浮点数。给浮点数赋值的时候如果赋值号右边是计算式要把右边的运算数变成小数才行。float 和 double - %f以小数点格式输出。例如3.141592%e以科学计数法格式输出。例如3.141592e00- %g根据数值的大小自动选择 %f 或 %e以简洁的方式输出。 long double- %Lf以小数点格式输出 long double 类型的值- %Le以科学计数法格式输出 long double 类型的值。- %Lg根据数值的大小自动选择 %Lf 或 %Le以简洁的方式输出。可以在 %f、%e 或 %g 中通过指定精度来控制小数点后保留的位数。语法为 - %[宽度].[精度]f指定输出的最小宽度和小数点后的精度。- 使用 - 符号可以左对齐输出。9.字符型变量charsigned charunsigned char 表示的范围是0到255因为char型变量占1个字节即4个二进制位。char类型的变量在未初始化时其值通常为不确定的值除非在声明时进行明确初始化。在大多数系统上char类型是8位取值范围为-128到127。因此char的最大值为127。常见ASCII码的大小规则数字 大写字母 小写字母。1. 数字比字母要小。如 “7” “F”2. 数字0比数字9要小并按0到9顺序递增。如 “3” “8”3. 字母A比字母Z要小并按A到Z顺序递增。如“A” “Z”4. 同一个字母的大写字母比小写字母要小32。如“A” “a”。几个常见字符的ASCII码值“A”为65“a”为97“0”为 48。转义字符\n | 换行符 (newline)\r | 回车符 (carriage return)\t | 制表符 (tab)\b | 退格符 (backspace)\f | 换页符 (form feed)\a | 响铃符 (alert/bell)\v | 垂直制表符 (vertical tab)\\ | 反斜杠 (backslash)\ | 单引号 (single quote)\ | 双引号 (double quote)\? | 问号 (question mark)\0 | 空字符 (null character)10.布尔型变量bool只有true和false在C语言中任何非零整数都会被视为true而零0会被视为false。true是C语言中bool类型的有效值且需要包含stdbool.h头文件。由于 bool 类型的值本质上是 0 或 1整数值因此可以直接与整数进行比较。作用布尔类型主要用于条件判断和逻辑操作。1. 提高代码的逻辑性和意图表达2. 防止潜在的编程错误3. 与现代编程语言接轨4. 代码优化和类型检查5. 统一和标准化布尔变量的操作条件判断 使用bool变量进行条件判断if (flag) { /* code */ }逻辑操作符- 逻辑与(条件都为真)- 逻辑或条件有一个为真||- 逻辑非!布尔类型bool和整数类型之间存在隐式转换规则- 任意非零整数在转换为布尔类型时都会被视为 true。- 整数值 0 转换为布尔类型时会被视为 false。当布尔类型的值用于整数表达式时- true 会自动转换为整数值 1。- false 会自动转换为整数值 0。11.静态变量static定义使用 static 关键字声明的变量既可以是局部变量也可以是全局变量。静态局部变量仅在当前函数内可见但其生命周期贯穿整个程序的运行直到程序结束时才会被销毁。在程序执行期间仅初始化一次并且在函数调用结束后不会被销毁保持其值直到下次函数调用。静态全局变量则只能在声明它的文件中访问。生命周期从程序开始运行时创建直到程序结束时销毁即使函数已经退出静态变量的值也不会丢失。使用场景: - 维护状态信息在函数内部使用静态变量可以保留函数的状态信息从而在多次调用之间维持该状态。- 限制作用域通过将变量声明为 static可以限制其作用域到当前文件或函数避免名称冲突增强封装性。- 性能优化静态变量的值在多次调用之间保持不变有助于避免不必要的初始化从而提高性能。12.变量的指针指针的操作定义和初始化 c int x 345; int *ptr x;指针的基本操作ptr可以合法初始化为NULL或者指向一个变量的地址如num字符型的指针也可以指向字符串常量如Hello。在C语言中指针变量未初始化时其默认值是未定义的可能是任何值。因此指针需要手动初始化。NULL是指针常量表示指针不指向任何有效的地址。NULL是一个宏通常定义为((void*)0)表示一个空指针常量。1. 取地址操作符 获取变量的地址。2. 解引用操作符 *访问指针指向的变量值。野指针 指针变量在被创建后如果不被赋值它的缺省值是随机的、不明确的这样的指针形象地称为“野指针”。 赋空值的方式 c p 0; p \0; p NULL;常量常量在程序中不可改变const修饰的变量其值不可修改。常量可以作为指针的目标但不能修改常量的值。指针的运算1. 指针加法当你对指针执行加法操作时实际上是将指针向前移动多个元素的大小。例如如果p是指向int的指针p 1会将指针p移动到下一个int类型的内存地址通常是增加sizeof(int)字节。2. 指针减法类似于加法减法操作将指针向后移动。例如p - 1会将指针p移动到前一个int类型的内存地址。3. 指针自增和自减指针也可以使用自增和自减--操作符。p会将指针移动到下一个元素p--会将指针移动到前一个元素。
C语言变量
1进制转化1.1十进制与二进制相互转化十进制数除以2将最后得到的数作为第一位后面的余数从下往上进行补齐就得到二进制。将二进制数从右往左数从零开始数将非零数对应的第几位作为2的次方再乘以这个数最后分别相加就得到十进制。1.2十进制与八进制相互转化十进制数除以8将最后得到的数作为第一位后面的余数从下往上进行补齐就得到二进制。将二进制数从右往左数从零开始数将非零数对应的第几位作为8的次方再乘以这个数最后分别相加就得到十进制。1.3十进制与十六进制相互转化十进制数除以16将最后得到的数作为第一位后面的余数从下往上进行补齐就得到二进制。将二进制数从右往左数从零开始数将非零数对应的第几位作为16的次方再乘以这个数最后分别相加就得到十进制。注余数为两位数从10开始用A表示1.4二进制转八进制二进制数每三位作为一组不足三位补零从右往左每三位由十进制转化方法转为八进制再分别组合就得到八进制1.5二进制转十六进制二进制数每四位作为一组不足四位补零从右往左每四位每位非零数对应的位数为2的次方由次方数乘以对应非零数的转化方法转为十六进制注结果为两位数从10开始用A表示再分别组合就得到十六进制当然也可以用电脑自带转化计算器这里只是方法。2.计算机存储单位1B或Byte等于八个字节bit字节为最小单位比如0或1。1KB1024B3.变量的定义与分类4个存储类型说明符auto自动变量register寄存器变量static静态变量extern外部变量存储类型数据类型变量名初始值变量的命名规则只能由数字字母下划线组成不能以数字开头长度不超过63字符变量名区分大小写变量名不能使用关键字变量名不能包含和#等符号3.变量的作用域局部作用域变量仅在某个特定的函数代码块中可见和可用。其中的变量被称为局部变量默认auto。自动变量通常是局部变量的生命周期从函数或代码块开始时创建到函数或代码块结束时销毁。在函数外部是无法直接访问这些局部变量的。全局作用域变量在整个程序内都可见。其中的变量被称为全局变量extern。初始值为0。4.使用变量注意1.变量必须先声明后使用2.变量一旦声明就不能更改其类型3.同一作用于内不能命名重名的变量4.变量屏蔽小作用域里的同名变量会把外面大作用域的变量 “盖住”暂时看不见外面的。5.注意变量的取值范围和初始化占用空间。5.整型变量int原码第一位表示符号即1表示负数其余位表示值。反码正数的反码是其本身负数反码是在原码的基础上符号位不变其余位取反。补码正数的补码是其本身负数补码是在原码的基础上符号位不变其余位取反最后一位加1。这是计算机处理中负数的标准方式。 补码对所有整数运算都适用无论它们是否有符号。补码表示的整数范围比原码表示的范围更大。因为补码的最高位不仅表示符号而且能够有效利用负数和正数的空间。例如假设一个8位系统原码表示的整数范围是-127到127而补码表示的整数范围是-128到127。补码使得能够表示更多的负数值因此它的表示范围更大而不是更小。6.整型变量分类1. 按符号分有符号 signed可存正负默认省略 signed无符号 unsigned只存非负数2. 按长度分short短整型int基本整型long长整型long long长长整型3. 完整 8 种写法signed short、unsigned shortsigned int、unsigned intsigned long、unsigned longsigned long long、unsigned long long4. 32 位常用范围short (2 字节)-32768~32767int (4 字节)-2147483648~2147483647long long (8 字节)范围最大unsigned int类型表示无符号整数因为是用32个位表示的所以是0~2^32-1即从0到429496729532位系统下。unsigned int没有符号位可以表示的最大值比int大。补充大端和小端指的是数据在内存中存储时字节的排列顺序。大端模式高字节存储在低地址低字节存储在高地址。小端模式低字节存储在低地址高字节存储在高地址。5.查看自己电脑上代码上这个变量占了几个字节#includestdio.h int main(void) { int i1; printf(%d\n,seziof(i)); }signed和unsigned相同点在一段存储空间上数字计算方法一样不同点在混合判断时格式转化不同7.转换规则较低级别向较高级别转化防止数据丢失char(8位)short int(16位)int (32位)long long(64位)signedunsignedintfloatdouble8.printf表示对于整型变量printf支持以下常用的格式化符号%d或%i用于输出有符号的十进制整数%u用于输出无符号的十进制整数%o用于输出八进制整数%x或%X用于输出十六进制整数%x使用小写字母%X使用大写字母在printf中还可以使用修饰符指定不同大小的整型变量%h用于表示短整型short%l用于表示长整型long%ll用于表示长长整型long long可以通过修饰符来控制输出的宽度、对齐方式、填充字符等宽度指定输出字段的最小宽度。-左对齐默认情况下输出是右对齐的使用-可以使其左对齐。0零填充用零来填充空白位置而不是默认的空格。9.浮点型变量floatfloat 4个字节double 8个字节long double 1216个字节在C语言中浮点型常量默认为double型可用F或f后缀标记为float型用L或l标记为long double型。float类型通常采用科学计数法存储数据其中包括符号位、指数部分和尾数部分。赋值时如果给浮点型赋值整数系统会自动为整数补上小数点。如果给整数型变量赋值了小数系统会直接将小数舍去变为整数注意这里是舍去而不是四舍五入。在有乘除的运算中只要有一个数是浮点数系统会自动把其他整数转换成浮点数。给浮点数赋值的时候如果赋值号右边是计算式要把右边的运算数变成小数才行。float 和 double - %f以小数点格式输出。例如3.141592%e以科学计数法格式输出。例如3.141592e00- %g根据数值的大小自动选择 %f 或 %e以简洁的方式输出。 long double- %Lf以小数点格式输出 long double 类型的值- %Le以科学计数法格式输出 long double 类型的值。- %Lg根据数值的大小自动选择 %Lf 或 %Le以简洁的方式输出。可以在 %f、%e 或 %g 中通过指定精度来控制小数点后保留的位数。语法为 - %[宽度].[精度]f指定输出的最小宽度和小数点后的精度。- 使用 - 符号可以左对齐输出。9.字符型变量charsigned charunsigned char 表示的范围是0到255因为char型变量占1个字节即4个二进制位。char类型的变量在未初始化时其值通常为不确定的值除非在声明时进行明确初始化。在大多数系统上char类型是8位取值范围为-128到127。因此char的最大值为127。常见ASCII码的大小规则数字 大写字母 小写字母。1. 数字比字母要小。如 “7” “F”2. 数字0比数字9要小并按0到9顺序递增。如 “3” “8”3. 字母A比字母Z要小并按A到Z顺序递增。如“A” “Z”4. 同一个字母的大写字母比小写字母要小32。如“A” “a”。几个常见字符的ASCII码值“A”为65“a”为97“0”为 48。转义字符\n | 换行符 (newline)\r | 回车符 (carriage return)\t | 制表符 (tab)\b | 退格符 (backspace)\f | 换页符 (form feed)\a | 响铃符 (alert/bell)\v | 垂直制表符 (vertical tab)\\ | 反斜杠 (backslash)\ | 单引号 (single quote)\ | 双引号 (double quote)\? | 问号 (question mark)\0 | 空字符 (null character)10.布尔型变量bool只有true和false在C语言中任何非零整数都会被视为true而零0会被视为false。true是C语言中bool类型的有效值且需要包含stdbool.h头文件。由于 bool 类型的值本质上是 0 或 1整数值因此可以直接与整数进行比较。作用布尔类型主要用于条件判断和逻辑操作。1. 提高代码的逻辑性和意图表达2. 防止潜在的编程错误3. 与现代编程语言接轨4. 代码优化和类型检查5. 统一和标准化布尔变量的操作条件判断 使用bool变量进行条件判断if (flag) { /* code */ }逻辑操作符- 逻辑与(条件都为真)- 逻辑或条件有一个为真||- 逻辑非!布尔类型bool和整数类型之间存在隐式转换规则- 任意非零整数在转换为布尔类型时都会被视为 true。- 整数值 0 转换为布尔类型时会被视为 false。当布尔类型的值用于整数表达式时- true 会自动转换为整数值 1。- false 会自动转换为整数值 0。11.静态变量static定义使用 static 关键字声明的变量既可以是局部变量也可以是全局变量。静态局部变量仅在当前函数内可见但其生命周期贯穿整个程序的运行直到程序结束时才会被销毁。在程序执行期间仅初始化一次并且在函数调用结束后不会被销毁保持其值直到下次函数调用。静态全局变量则只能在声明它的文件中访问。生命周期从程序开始运行时创建直到程序结束时销毁即使函数已经退出静态变量的值也不会丢失。使用场景: - 维护状态信息在函数内部使用静态变量可以保留函数的状态信息从而在多次调用之间维持该状态。- 限制作用域通过将变量声明为 static可以限制其作用域到当前文件或函数避免名称冲突增强封装性。- 性能优化静态变量的值在多次调用之间保持不变有助于避免不必要的初始化从而提高性能。12.变量的指针指针的操作定义和初始化 c int x 345; int *ptr x;指针的基本操作ptr可以合法初始化为NULL或者指向一个变量的地址如num字符型的指针也可以指向字符串常量如Hello。在C语言中指针变量未初始化时其默认值是未定义的可能是任何值。因此指针需要手动初始化。NULL是指针常量表示指针不指向任何有效的地址。NULL是一个宏通常定义为((void*)0)表示一个空指针常量。1. 取地址操作符 获取变量的地址。2. 解引用操作符 *访问指针指向的变量值。野指针 指针变量在被创建后如果不被赋值它的缺省值是随机的、不明确的这样的指针形象地称为“野指针”。 赋空值的方式 c p 0; p \0; p NULL;常量常量在程序中不可改变const修饰的变量其值不可修改。常量可以作为指针的目标但不能修改常量的值。指针的运算1. 指针加法当你对指针执行加法操作时实际上是将指针向前移动多个元素的大小。例如如果p是指向int的指针p 1会将指针p移动到下一个int类型的内存地址通常是增加sizeof(int)字节。2. 指针减法类似于加法减法操作将指针向后移动。例如p - 1会将指针p移动到前一个int类型的内存地址。3. 指针自增和自减指针也可以使用自增和自减--操作符。p会将指针移动到下一个元素p--会将指针移动到前一个元素。