C语言(我)易错点

本文涵盖了C语言的基础知识,包括switch语句的限制、字符串的表示与比较、运算符优先级、类型数据的内存占用、函数参数的传递以及全局变量的作用域。强调了%运算符对整数的要求,字符串的比较不应使用关系运算符,以及实参和形参在内存中的不同。此外,还提及了变量作用域的细节和不同类型数据在不同编译系统下的内存占用差异。
摘要由CSDN通过智能技术生成

1. 在switch( c )语句中,c不能是( )类型

switch语句后的控制表达式只能是short、char、int、long整数类型和枚举类型,不能是float,double和boolean类型

2. 在C语言中,字符串的结束标识为’\0’

在程序中往往依靠检测“′\0′”的位置来判定字符串是否结束,而不是根据数组的长度来决定字符串长度。

3.C语言运算符优先级顺序

在这里插入图片描述
自增运算符 ++ 和自减运算符 --,在作后缀运算符(如表达式 x++)时,较其用作前缀运算符(如表达式 ++x)时,具有较高的优先级。

+、-、* 和 & 运算符记号不但可以当作一元运算符(unary operator,只需要一个操作数),也可以当作二元运算符(binary operator,需要两个操作数)。例如,* 只有一个操作数的时候,就是间接运算符(indirection operator),而有两个操作数的时候,就是乘号。

一个表达式可以包含多个运算符。在这种情况下,运算符的优先级决定表达式的哪部分被处理为每个运算符的操作数。例如,按照运算规则,表达式中 *、/、以及 % 的优先级比 + 和 - 高。

如果一个表达式中的两个操作数具有相同的优先级,那么它们的结合律(associativity)决定它们的组合方式是从左到右或是从右到左。例如,算术运算符和操作数的组合方式是从左到右,赋值运算符则是从右到左。

4. 在C语言中,要求运算数必须是整型的运算符是%

%是求余运算符,也叫模除运算符,用于求余数。%要求两个操作数均为整数(或可以隐式转换成整数的类型)。

标准规定:

1、如果%左边的操作数为负数时,则模除的结果为负数或者0,

2、如果%左边的操作数为正数时,则模除的结构为正数或者0。

5. C语言中只有字符串常量而没有字符串变量

6. 字符串比较大小是以第1个不相同字符的大小为标准的,跟长度没有关系

字符串比较大小除了使用库函数strcn3()以外,就只能靠自己写代码来实现了,而不能通过关系运算符来比较大小。因为字符串在表达式中相当于const char*,即常字符指针,代表的是字符串的首地址,关系运算符会将两个字符串的首地址值比较大小,这是毫无意义的。

空串的长度为0,而以空格打头的字符串的长度至少为 1

7. 全局变量的作用域

全局变量是在函数外部任意位置上定义的变量,它的作用域是从变量定义的位置开始,到整个源文件结束止。当全局变量定义在后,引用它的函数在前时,应该在引用它的函数中用extern对此全局变量进行说明,以便通知编译程序该变量是一个已在外部定义了的全局变量,这时全局变量的作用域从extern说明处起,延伸到该函数末尾。

8. 各种类型数据占用内存大小

在ANSI标准中,long、int和short分别占用4、2和2个字节。但实际上对于某些C编译系统,int和short都占用4个字节,所以说各种类型数据占用内存大小是由选择何种C编译系统决定的。

9. 实参与形参

在内存中,实参单元与形参单元是不同的单元。在C语言中,仅在调用函数时,给形参分配存储单元,并将实参对应的值传递给形参,调用结束后,形参单元被释放,实参单元仍保留并维持原值。

==============================================持续更新个人易错点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Vicky__3021

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值