提示:本篇文章主要是对c语言零基础的人说明,只是大概说每个操作符的用法,具体用法原理以后说明。
c语言的操作符
c语言是非常灵活的,其具有非常丰富的操作符,使得用起来就比较灵活。要想掌握c语言的操作符,其难度还是很大的。下面让我们来先学习c语言中的单目操作符。
单目操作符中“!”表示逻辑反操作,你可以这样理解,如果一个事件本身为真,那么!表示为假。(c语言中0代表假,非0表示为真)。
int main()
{
int flag = 0;
if(!flag)
{
printf("hehe\n);
}
return 0;
}
如果你还是不能很好的理解其中的关系,那么请看这串代码。认真思考这串代码的结果是什么?
解释:因为flag=0,如果没有逻辑操作符“!”,那么什么也不会打印。flag = 0表示为假,而c语言中只有为真才打印,!flag表示为真所以代码能顺利执行下去,打印hehe.
"+,-"比较简单相信你能理解。“&,sizeof”讲printf函数和scanf函数时候讲过,如果不理解在第一次博客中。“~”由于和2进制有关后期会专门写这个操作符用法,对于新手来说用不到,“*”就比较有意思后期指针开始后你会大量接触这个运算符。咱们把重点放到“++--”上。
前置++和后置++的区别
后置++表示先赋值在相加,下面请看这一代码的结果。
int main()
{
int a = 10;
int b = a++;
printf("%d%d",a,b);
return 0 ;
“a++”表示后置加加,“++a”表示前置加加,二者有很大的区别,上述代码表示后置加加,如果你不能很好的理解可以把这串代码看成“int a = 10,int b = a,a=a+1”;,这样可以算出b = 10;a = 11。前置加加和后置没区别,其主要思想还是不变。
int a = 10;
int b = ++a;
printf("%d%d,a,b);
return 0;
和上面的方法一样把代码看成“int a 10;a=a+1;int b = a”,其结果a=11,b=11。注意前置加加表示先加后赋值,后置加加表示先赋值后相加。
“()”表示强制类型转换。通过数据类型的分类知,3.14表示浮点型,而我定义一个整形3.14那么编译器会报错,而我不想编译器报错可以类型转换,如“int a = (int)3.14”,其把浮点数强制转换成为了整形。
关系操作符与逻辑操作符:
关系操作符相信你可以自己理解其意义。逻辑操作符说白了“&&”表示并且,“||”表示或者。
下面看“&&”与“||”共同运用的代码,打印一个1000年到2000年的所有闰年。(1.能被4整除但不能被100整除。2.能被400整除)
#include<stdio.h>
int is_leap_year(int y)
{
if((y%4==0 && y%100!=0)||(y%400==0))
return 1;
else
return 0;
}
int main()
{
int year=0;
for(year=1000;year<=2000;year++)
{
//判断year是否是闰年
if(1==is_leap_year(year))
{
printf("%d\n",year);
}
}
return 0;
}
条件操作符
条件操作符的具体语法 exp1 ? exp2 : exp3",主要表达的意思为如果exp1为真打印exp2的结果,如果exp1为假打印exp3的结果。条件操作符也叫做三母操作符。
int a = 10;
int b = 20;
int r = a>b ? a : b;
printf("%d",r);
讲解:看第四行代码,因为a=10,b=20,a<b所以条件为假打印exp3也就是b的值,所以最后的结果为20.
逗号表达式
逗号表达式的语法为"exp1,exp2,exp3,...expn“”,逗号表达 式就是逗号隔开的一串表达式,从左到右依次计算,整个表达式的结果为最后一个表达式的结果
int main()
{
return 0;
int a = 10;
int b = 20;
int c = 0;
int d = (c = a-2,a=b+c,c-3);
printf("%d",d);
return 0;
}
依次往后计算其结果为5。c=a-2=10-2=8, a=b+c=20+8=28, c-3 = 8-3=5。
下标引用,函数调用和结构成员