C语言笔记——摘自《C语言与程序设计》(华科)

本文是关于C语言的学习笔记,涵盖了标识符规则、关键字的使用、基本数据类型、浮点数表示、运算符优先级、自增自减运算、位运算、字符串处理、输入输出函数等内容,深入解析了C语言的基础概念和编程技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(1)编译器从左向右收集字符,并尽量建立最长的记号 

(2)标识符由字母,数字和下划线组成,但首字母必须是字母或下划线
         如今编译器能识别63个字母

(3)关键字不能作为普通标识符,但可以作为宏名,预处理发生在翻译之前

(4)常用类型名:char    -  signed char   -  unsigned char -     int -   unsigned-   --short(%hd) - long(%ld) -   unsigned  short   - unsigned long - float - double-  long double

(5)整形类型的相关信息记录在limit.h

(6)float:N=+-m*b^+-x
     浮点型的表示是近似的,不能使用==和!=运算符比较float和double类型的数据,但可以用差小于ESP来解决

(7)整形常量可以带有后缀,虽然字母大小写任意,用大写比较好

(8)科学计数法:尾数+e or E +-n.  n为整数

(9)'\0'表示值为0的字符,通常用于表示一个字符串结束。用来代替0是为了在某些表达式中强调字符性质

(10)在程序中书写字符串时不能直接中途换行——可用\续行

(11)#define定义的标识符没有对应的存储单元,只是在编译前由预处理程序进行简单的文本替换

(12)求值顺序:先看优先级,再看结合性。
         单目、条件和赋值运算符的结合性为右结合性

(13)计算含有&&和||的表达式时,只要知道结果的真假,就会停止进一步计算

(14)自增自减运算
                后缀++或--的计算有延迟效果,延迟的终止点称为序列点。
                        序列点:
                         (1)&&    ||    ?:   ,
                         (2)完整表达式结束时,return表达式,条件表达式之后

(15)s[i++] +=1 and s[i++]=s[i++]+1 前者i自增一次,后者两次

(16)位运算:
                    &:去除某些位--与需保留位对应的位设置为1,其余为0
                    | :打开某些位--与需保留位对应的位设置为0,其余为1
                    ^:翻转某些位--与需保留位对应的位设置为0,其余为1

                    << 在使用右移运算符时应用无符号类型

(17)     整数提升:char    -  signed char   -  unsigned char  unsigned  short  当所有值可以用int表示时,则转换为int,否则为unsigned

(18) 枚举类型:缺省情况下,第一个枚举常量的值为0,以后每个值比前个值大一
            #define一次为一种情况命名,而枚举类型用于给一组相关型的整形常量命名
                    
(19)可以使用%3c的输出方式

(20)EOF在头文件stdio.h中定义为一个符号常量,其值为-1,用作文件结束。“Ctrl+z”输入

(21)puts函数从指定的地址读取字符串输出到标准输出设备,并在串尾输出一个换行符‘\n’

(22)  二进制最高位为1,%d输出相应的负数值,%u输出正数

(23)%f小数部分为6位,多于6位采用四舍五入
          %e包括一位非0的整数部分和五位小数部分,采用四舍五入和末位补0
          %g将上述转换数据去无效0后比较,输出宽度小的那种形式

(24)printf("abc%n",&x);
          printf("x=%d",x);

(25)  int max=6;
          char s[10]="123456789";
          printf("%*c",max,' ');
          printf("%*s",2*max,s);
          printf("%*s",max,s);

(26)gets函数结尾的换行字符‘\n’被空字符‘\0’所替换,作为文件结束的标志
     如果需要输入一个带空白字符的字符串,则必须使用gets函数

(27)scanf函数一直等到输入数据个数达到转换说明个数才开始执行
          %s可以跳过空白字符
          % *c可以起到滤掉前行输入的换行符的作用  

(28)在语法上需要一条语句,而在实际功能上不需要执行任何操作时,可以使用空语句

(29)else 与其前面最靠近的还未配对的if配对

(30)switch的值必须是整型,(字符,枚举),且必须用圆括号(),{}不能省,同一switch语句的case常量必须互不相同。执行相同语句的case可以写成一行,其间可以用空格或制表符分隔,但不能用逗号分隔

(31)for语句每次计算后就进行比较

(32)break在循环中用于退出当前循环

(33)void --return;

(34)在一个程序中,每个外部变量只能在某个文件中定义一次,而外部变量的声明可以出现多次。外部变量的初始化只能出现在定义中
(35)auto:系统为自动变量在栈上分配内存;当退出块时,系统释放其内存

(36)entern和static缺省值为0

(37)外部变量能够被所有函数访问到,没有给函数传递数据的开销,所以提高程序的性能

(38)函数的形参能声明为register,但不能声明为extern和static,并且寄存器变量不能执行取地址运算

(39)数组名具有非左值特性,不能对数组名进行赋值操作

(40)数组大小的说明必须是正整数,并且在编译之前就必须明确

(41)初始化必须从数组中下标为0的元素开始,只能省略最右边连续元素的初值

(42)具有局部变量的数组,如果不初始化,其元素的值是随机的。外部数组和静态数组的缺省值为0

(43)有一种情况,对字符数组初始化的时候,'\0'显示给出

(44)当数组的初值全部给出时,第一维大小的说明可以省略

(45)一维数组,二维数组或者n维数组,当其 作为实际参数时只需给出数组名,而对应的形参则是第一维不给出,其余各维的大小则需给出
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值