现在大多的大学非IT专业也会教c语言作为编程基础。
临近考试,总结一下我认为容易出错的地方分享给大家。
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为函数名。(声明函数的语句必须写在主函数上方)
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)分别进行使用。