第三章运算符,表达式十个问题

来源:互联网 发布:ipad不下载软件 编辑:程序博客网 时间:2024/06/07 06:10


1.  i+1;这类的函数式在哪种情况下正确

   在括号表达式里,例如:int x; int i=3; x=(++i,i++,i+10)

逗号表达式里,i在遇到每个逗号后,认为本计算单位已经结束,i这时自加。例子i10进行比较后,认为本计算单位已经结束,i这时候自加。

 

2. 条件表达式能否取代条件语句

   不是所有的if条件语句都可以写成条件表达式。其实它们的实现方式很相似,但还是有一点区别的。条件表达式必须返回一个值,所以不能代替无返回值的if条件语句。

 

3为什么位运算符里没有同或运算

   同或就是相同为真,不同为假。可以在异或前面加一个逻辑非来代替表示。位运算符是系统自带语言,里面没有同或。

 

4如何减少优先级错误

  在表达式中,如果有布尔操作,算数运算,位操作等混合运算,最好在适当的地方加上括号,只是清楚明了,事实证明这是一个良好的编程风格

  C语言中,跟顺序有关的问题,有些定义很好,如优先级和结合性,有些定义的很含糊,如大部分表达式中的各个操作数计算顺序就是不确定的,目的是为了让编译器设计者选择最合适的方法来产生最快的代码,但是要注意的是在函数调用中,各个参数计算顺序是不确定的

 

5逗号运算符有什么作用

   逗号表达式是指在C语言中,多个表达式可以用逗号分开,其中用逗号分开的表达式的值分别结算,但整个表达式的值是最后一个表达式的值,结合性是从左至右

 

6. C语言性能优化的方法有哪些

   使用位操作

   代码中使用代码块可以及时回收不再使用的变量,提高性能。变量的作用域从定义变量的那一行代码开始,一直到所在代码块结束

   带参数的宏定义效率比函数高,简单的运算可以用宏定义完成

   当一个函数被调用很多次,而且函数中某个变量值是不变的,应该将此变量定义为static(只会分配一次内存),可以提高程序效率

 

7指针数组和数组指针有什么区别

   数组指针(也称行指针)定义 int (*p)[n];  ()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长。执行p+1时,p要跨过n个整型数据的长度

   指针数组  定义 int *p[n];  []优先级高,先与p结合成一个数组,再由int*说明这是一个整型指针数组,它有n个指针类型的数组元素,可以*p=a,这里*p表示指针数组的第一个元素的值,a的首地址的值

 

8.什么是条件表达式的嵌套

   表达式的嵌套简单理解就是表达式里有表达式,多重条件表达式计算顺序为自右向左。嵌套可以理解为包含,就是在if里面还有if

 

9. ++--的前缀,后缀有什么区别

   前缀比后缀的效率高,返回引用的效率比返回对象的效率高,所以前缀++返回引用,后缀++返回对象。总之,对于内置类型,采用哪种格式不会有差别,但对于用户定义的类型,如果有用户定义的递增和递减运算符,则前缀格式的效率更高

 

 

10 嵌入式对表达式有什么要求

较长语句要分成多行书写,长表达式要在低优先级操作符处划分新行,操作符放在新行之首,划分出的新行要进行适当的缩进,使排版整齐,语句可读

循环,判断等语句若有较长的表达式或语句,则要进行适当的划分,长表达式要在低优先级操作符处划分新行,操作符放在新行之首

若函数或过程中的参数较长,则要进行适当的划分,一行程序以小于80字符为宜,不要写得过长

不允许把多个短语句写在一行中,即一行只写一个语句

相对独立的程序块之间,变量说明之后必须加空行

原创粉丝点击