C语言初学者容易遇到的问题、编译器报错、运算符
scanf的使用
C语言初学者经常会因为C语言本身极其严谨的格式而出错,例如句末结束时的分号。
scanf的使用都是形如scanf("",)引号内的%d,%f,%c之类的字符一定要与引号外变量的数据类型相对,
还有初学者最容易出错的地方就是变量前面的取地址符“&”。
这里提一下各个数据类型
int | %d | 整形 | 2或4字节 |
---|---|---|---|
char | %c | 字符型 | 1字节 |
float | %f | 浮点型 | 4字节(6位小数) |
double | %lf | 双精度型 | 8字节(15位小数) |
long (int) | %ld | 长整型 | 4字节 |
short(int) | %d | 短整形 | 2字节 |
附:%nd中n为整数用来指定输出字段的宽度
%.nf中n为整数,用来指定小数点之后的位数(不要忘了’%‘后的’.’)
%o以八进制形式输出可用于输出时数据进制的转换
%x或%#x以十六进制输出
运算符
在学习C语言的过程中可能经常会出现一些不认识的运算符,这里提一下难以理解的运算符。
i++和++i
对于C语言初学者来说可能会有些难以理解,以下举实例来方便理解到这里可能就有人有点懵了,为什么a=1,b=2
为了便于理解就用比较通俗的话来讲,就是
i++是先运算,后加1;++i是先加1,后运算。
所以上图中的i=1先做赋值运算,将值赋予a,即a=1
之后i再加1,所以最终输出i=2。
然后我们来看一下++i
这里++i先加1为i=2,然后将值赋给a,所以a这里的值也是2,输出结果就会如上图所示。
逻辑运算符
假设a=1,b=0
C语言中值为非0为真,值为0为假,所以a为真,b为假。
&&逻辑与运算符可以将其视为数学中的^.一假则假,两个都为真才是真
||逻辑或运算符可以理解为数学中的ˇ,一真则真,两个都为假才是假
&& | 逻辑与运算符 | a&&b为假 |
---|---|---|
丨丨 | 逻辑或运算符 | 丨丨ab为真 |
! | 逻辑非运算符 | !a为假,!b为真 |
关系运算符
a=1,b=2,c=1
== | (等于)判断两边是否相等 | a= =b为假,a==c为真 |
---|---|---|
!= | (不等于)检查是否相等 | a!=b为真,a!=c为假 |
> | 大于 | a>b为假 |
< | 小于 | a<b为真 |
>= | 大于等于 | a>=b为假,a>=c为真 |
<= | 小于等于 | a<=b为真,a<=c为真 |
赋值运算符
= | 最基本的赋值运算符,将右边的值赋给左边 | c=a+b,把a+b的值赋给c |
---|---|---|
+= | 加且赋值运算符 | a+=1等价于a=a+1 |
-= | 减且赋值运算符 | a-=b等价于a=a-b |
*= | 乘且赋值运算符 | a*=b等价于a=a*b |
/= | 除且赋值运算符 | a/=b等价于a=a/b |
三目运算符
表达式1?表达式2:表达式3
表达式1一般为判断语句,若表达式1为真则执行表达式2,表达式1为假,则执行表达式3;
上图