龙空技术网

C语言中常见的问题(一)

不凡的开笑 383

前言:

现时同学们对“c语言的单引号怎么打”大概比较关切,大家都需要了解一些“c语言的单引号怎么打”的相关文章。那么小编在网摘上汇集了一些有关“c语言的单引号怎么打””的相关资讯,希望兄弟们能喜欢,你们一起来学习一下吧!

1. =不同于==

符号=赋值运算,符号==比较运算。如果程序员在无意中写错了,编译器会发出警告,有些不,没有警告却会让结果充满扑朔迷离。

例如1:检查a是否等于b

If(a=b)

Printf(“”);

实际代码的操作却是将b的值赋给a,然后检查a的值是否为零。编译器不会报错,甚至可能结果都是对的,当a和b分别为零时,结果还会正确吗?

例如2:跳过文件中的空格符,制表符和换行号

While(a=’ ‘||a==’\t’||a==’\n’)

a=getc(f);

空格比较运算符错写为赋值运算符,又因为赋值运算符的运算等级远远低于||运算符,while的内置条件就成为了a=(’ ‘||a==’\t’||a==’\n’)条件会一直成立,只要不停止文件的输入,循环就不会停止。

警告信息可以忽略,但是程序出现的bug却不能忽略。

2.&和|不同于&&和||

按位运算符&与逻辑运算符&&,或者将按位运算符|与逻辑运算符||调换,也是很容易犯的错。

3.字符和字符串

C语言中的单引号和双引号含义完全不同,如果两者弄混,编译器并不会报错,只是运行结果会出现令你不开心的结果。

单引号引起的一个字符其实一般代表着一个整数,因为每个字符在编译器中都会有一个整数与之对应,像’a’一般在程序中把它当作97的,后面的字母在97依次增加。

双引号引起来的字符串,代表的是一个指向无名数组起始字符的指针。

例如:

Printf(“hello world \n”);

Char st1[]={‘h’,’e’,’l’,’l’,’o’,’w’,’o’,’w’,

’o’,’r’,’l’,’d’,0};

Printf(hello);

上面两个程序是等效的,结果都是一样的。

你会发现双引号其实代表一个指针,而单引号则代表着一个整数,两者混用,有时编译器可能会提醒你,但是有时编译器也会识别不出,这时候如果不细心,这个bug会一直折磨你。

标签: #c语言的单引号怎么打