c语言入门难点(指针以前)

现在大多的大学非IT专业也会教c语言作为编程基础。
临近考试,总结一下我认为容易出错的地方分享给大家。

一. 基础知识类型

常用基本数据类型占用空间(64位机器为例)

char : 1个字节
int :4个字节
float:4个字节
double:8个字节

基本类型书写

整数

a,默认为10进制 ,10 ,20。
b,以0开头为8进制,045,021。
c.,以0b开头为2进制,0b11101101。
d,以0x开头为16进制,0x21458adf。
注意:有int a = 2L 这种写法,为int转换为long int型
另外还有int a = 2U 这种写法,为int转换为unsigned int型(无符号既非负数整型)

小数

单精度常量:2.3f 。
双精度常量:2.3,默认为双精度(double)。

字符型常量

用英文单引号括起来,只保存一个字符’a’、‘b’ 、’*’ ,还有转义字符 ‘\n’ 、’\t’。
注:给char类型变量赋值的时候,需要加上引号,不然会被识别为其他变量名或者数字数据

整数常量

常考的数据的标准形式

85         /* 十进制 */
0213       /* 八进制 */
0x4b       /* 十六进制 */
30         /* 整数 */
30u        /* 无符号整数 */
30l        /* 长整数 */
30ul       /* 无符号长整数 */

212         /* 合法的 */
215u        /* 合法的 */
0xFeeL      /* 合法的 */
078         /* 非法的:8 不是八进制的数字 */
032UU       /* 非法的:不能重复后缀 */

浮点常量

3.14159       /* 合法的 */
314159E-5L    /* 合法的 */
510E          /* 非法的:不完整的指数 */
210f          /* 非法的:没有小数或指数 */
.e55          /* 非法的:缺少整数或分数 */

关系运算符

==	检查两个操作数的值是否相等,如果相等则条件为真。	(A == B) 不为真。
!=	检查两个操作数的值是否相等,如果不相等则条件为真。	(A != B) 为真。
>	检查左操作数的值是否大于右操作数的值,如果是则条件为真。	(A > B) 不为真。
<	检查左操作数的值是否小于右操作数的值,如果是则条件为真。	(A < B) 为真。
>=	检查左操作数的值是否大于或等于右操作数的值,如果是则条件为真。	(A >= B) 不为真。
<=	检查左操作数的值是否小于或等于右操作数的值,如果是则条件为真。	(A <= B) 为真。

注意:其关系运算符只能用于判断左右两部分的大小关系,输出值为bool类型值(即判断错误输出为0,判断成功输出为1)


位运算符

此处为高频考点,并且容易记错,需要多多练习加深记忆。

&	
按位与操作,按二进制位进行"与"运算。运算规则:
0&0=0;   
0&1=0;    
1&0=0;     
1&1=1;	(A & B) 将得到 12,即为 0000 1100

|	
按位或运算符,按二进制位进行"或"运算。运算规则:
0|0=0;   
0|1=1;   
1|0=1;    
1|1=1;	(A | B) 将得到 61,即为 0011 1101

^	
异或运算符,按二进制位进行"异或"运算。运算规则:
0^0=0;   
0^1=1;   
1^0=1;  
1^1=0;	(A ^ B) 将得到 49,即为 0011 0001

~	
取反运算符,按二进制位进行"取反"运算。运算规则:
~1=0;   
~0=1;	(~A ) 将得到 -61,即为 1100 0011,一个有符号二进制数的补码形式。

'<<'	二进制左移运算符。将一个运算对象的各二进制位全部左移若干位(左边的二进制位丢弃,右边补0)。	
A << 2 将得到 240,即为 1111 0000

'>>'	二进制右移运算符。将一个数的各二进制位全部右移若干位,正数左补0,负数左补1,右边丢弃。
A >> 2 将得到 15,即为 0000 1111

循环语句

易错点:不要在循环条件语句后直接加分号,会造成循环语句不执行。(如for(i;i是错误的写法)

局部变量的计算

在某些函数中或是循环判断语句中被新定义的(或者可以理解为被中间的大括号包括的部分)变量为局部变量。
局部变量不参加外部运算,所以要注意题中出现初始化局部变量的题型中值的变化。

数组中的定义方式

一维数组如a[5]代表创建了空间为5的数组。
由于c语言中下标值是从0作为第一个开始计的,查找或者引用的时候,a[0]为第一个元素,a[4]为最后一个元素
其中0和4为’下标值’。

二. 语法错误类型

语法错误是初学者出现错误最多的地方,也是最基本的要解决的一环(毕竟语法错误你连编译都编译不了)

中英文字符混淆

此为新手出错的最多的问题之一
当其报错为stary'***'in program的时候,你就需要寻找其提示行的中文字符混淆的代码了。
通常出现错误的都是中文括号和中文分号

函数定义

首先要有main()主函数,否则无法运行!
建议将其他函数写在主函数之前,以便于直接调用。否则需要在主函数上方写函数声明语句,容易忘记。
函数声明形式为int function_name(int, int); 其中function_name为函数名。(声明函数的语句必须写在主函数上方)

三.特殊需要调用其他库的类型

include

常用函数

strcpy→把左边的字符串复制给右边
如执行strcpy(a,b)(a,b均是字符串)则b字符串会被初始化和a的样子。
strlen→计算字符串长度
如执行strlen(a)(a为字符串)则会输出一个整型数据,其值为字符串的长度。
strcat→连接左右字符串
如执行c = strcat(a,b)(a,b,c均已定义为字符串),则c会被初始化为a和b进行连接的结果(左边为a右边为b)
strcmp→比较两边字符串的大小(比较两边ASCII码总和的值)
如果 str1 小于 str2 返回 < 0; 如果 str1 大于 str2 返回 > 0;如果两者相等,返回 0。
其实当返回值小于零或者大于零的时候,最终返回的是 正负号乘以相差的字符数的值
所以当使用条件语句的时候应当注意其值为0(false)或者非零数(true)分别进行使用。

你可能感兴趣的:(c语言入门难点(指针以前))