本帖最后由 sunyongnan 于 2015-8-5 06:35 编辑
上接:http://bbs.itheima.com/thread-222108-1-1.html
五、赋值及自增自减 1、运算符是什么? “=”赋值运算符、“+=”加等于运算符、“-=”减等于运算符、“++”自增运算符、“--”自减运算符 2、运算符由什么用? 改变数据的值。 3、运算符怎么用? int a = 1; a += 2; a -= 2; a++; a--; ++a; --a; 4、运算符什么时候用? 当你想改变数据的值。 5、运算符由什么特点? 1)变量才能自我变化,如自增或自减,但常量不能。 2)++a与a++,对a本身没有区别,但是参与其它运算时,a++这个整体的值没有变化。如,int a = 1; int b = a++; 那么a = 2,b等于1,但如果是int b = ++a; 则a和b都为2,即++在前,则运算前自增,再参与别的运算,但++在后,则先参与别的运算后再自增 。 六、sizeof 1、sizeof是什么? sizeof是C语言的一个关键字,是一种单目操作符,而不是函数。 2、sizeof有什么用? sizeof操作符以字节形式给出了其操作数或数据类型的存储大小。 3、sizeof怎么用? sizeof(类型说明符,数组名或表达式) 如,sizeof(int); 或sizeof变量名 如:int a; sizeof a; 4、sizeof什么时候用? 当需要查看数据类型或变量在当前编译环境占用字节数时。 5、sizeof有什么特点? 1)sizeof是根据当前系统的编译环境去计算字节的大小。 2)注意sizeof后面直接连字符的用法,会自动变成ASCII对应的int值。 6、补充 1)有几部分内容参与运算,就叫几目运算符。 2)只有一部分内容参与运算,就是单目操作符。 3)“+”有两部分内容参与运算,叫双目操作符。 4)sizeof后不能直接跟数据类型,需要加括号sizeof(int)。 5)sizeof应用场景:当需要字节数参与运算时(编译器环境不同,占用的字节数也不同) 如:用int字节数,乘以10 printf(“%lu\n”,sizeof(int)*10); 6)printf(“%lu)n”,sizeof(‘a’)); //4 ‘a’自动转换成ASCII码对应的数值97,97是整型,所以返回占用的字节数是4。 7)任何的一个字符参与运算的时候读会转换成对应的ASCII码对应的int值。 8)sizeof运算结果是一个无符号(long unsigned int)的长整型,表示正整数,用lu占位,但是可以跟int互相转换(有符号的长整型包括所有范围内的整数)。 七、关系运算 1、关系运算时什么? “==”、“>”、”<”、”>=”、”<=”、”==”、”!=” 2、关系运算符有什么用? 对数据进行比较,看是否成立。 3、关系运算符怎么用? 把运算符号放在两个要比较的数据中间就可以。条件成立=真(1),条件不成立=假(0)。 4、关系运算符什么时候用? 当需要对两个数据进行比较。 5、关系运算符有什么特点? 1)关系运算符运算结果是一个int值.0或1。 2)优先级:>、<、>=、<=、优先级相等,但大于==和!=,同时==与!=优先级相等。 3)如果优先级相同的两个运算,先后顺序看结合律(结合律值要么从左往右运算,那么从右往左运算),关系运算符结合律是从左往右,即:先看优先级,再看结合律,如下:int b = 1 != 2 > 3 < 4; 等效于:2 > 3为假=0,0 < 4为真=1,1 != 1为假=0,所以最终结果=0。 八、逻辑运算 1、逻辑运算是什么? “ ||”或“ && ”与(且) “ ! ”非 2、逻辑运算有什么用? 对多个表达式进行并列真假判断.。 3、逻辑运算怎么用? ||只要有一边的表达式为真,则结果为真1,两边都不成立,则结果为假0。 而&&必须两边 全部为真才为真,只要有一边的表达式为假,结果为假。 如:1>2||2>1;结果为真(1),但如 果1>2&&2>1.结果为假(0);!则是取当前结果的反面.真假调换. 4、什么时候用? 当需要对对多个表达式进行并列真假判断。 5、有什么特点? 1)所有数据都有真假值.0为假,其它的数都为真(规定).。结合律:从左往右执行。 2)如果||表达式左边表达式已经为真,则右边不执行。而&&只要左边为假右边不执行。3.优先级顺序为:小括号() > 负号( -) > ! > 算术运算符 > 关系运算符 > && > || 如:1+2<3||!-3<4&&5>0 等效于(1+2)<3 || ( ( !(-3) )<4 && (5>0) ) 结果是:1。 6、示例
int main() {
int a = 2; int b = 1 > 2 || a++; //1>2不成立,返回0,但是a的值是2是真,返回1 printf("a=%d,b=%d\n",a,b); //a=3,b=1 int a1 = 1 + 2 < 3 || !-3 < 4 && 5> 0; printf(“%d”,a1); //1 return 0; } |