C语言基础理论——运算符,if选择,if-else与三目的效率

运算符:

1、赋值运算 =
左值=右值 左值:必须是变量,不能是常量
注:1、注意溢出
溢出:将大数据存储到小空间 (2L的水杯,却放3L的水)
不同类型赋值:
short=int 可能溢出
int=short; 不会溢出
short=char;
short=float ->将小数位舍弃,整数位赋值
float=short; //整数位赋值,小数位为0
2算术运算符:+ - * / %
算术运算符表达式:由数据与运算符组成的式子称为表达式
表达式的结果:算术结果
注:在运算算术中,只能转换为同类型才能运算(为了提高精度)
char->int
int along b a->long
int a
float b a->double float->double
char/short->int-float>double
3、判断运算符: > < != >= <=
结果:bool值的结果(1 0)
4逻辑运算符: ! || &&
或 表达式1||表达式2 一真则真
且 表达式1&&表达式2 一假则假
5、自增自减运算符:++ –
i=0
前自增 ++i 结果 0 i=1 (i)先自增 (结果)再赋值
i=0
后自增 i++ 结果 i=1 (i)先赋值(结果) (i)再自增
6、三目运算符:
表达式1?表达式2:表达式3;
若表达式1为真,则取表达式2的结果,否则取表达式3
7、逗号运算符: 表达式1,表达式2,表达式3,…表达式n
表达式结果:表达式1
注:不能在初始化去使用
8、运算符:sizeof 求类型或者变量的空间
9、强制类型运算符: (类型)表达式

选择结构

if
单分支:
        if(condition)		//如果表达式为真(非0),则执行下列表达式
        		command;
双分支:  if(condition)
        		command1;
    	else
    		command2;;		
   	注:command可以是一条语句,或者一个语句块{。。。}  

   多分支:
		if(condition1)
		 command1;
		else if(conditon2)
		 command2;	
		else if(condition3)
		 command3;
		 ...
		else
		  command;
		  
   switch(整型表达式)
   {
		case 常量表达式1:
			break;
		case 常量表达式2:
			break;
    	default:
   		 	break;
   }

   注:表达式与常量表达式进行匹配,遇到break则结束分支。

if-else与三目运算符的执行效率

if-else 是先赋值再运算,为了节省时间,分支预测会先猜测运行 if 还是 else 并继续运行 (默认是if),若猜对则因并行运算而节省时间,若猜错则因消除运算而耗费时间。
三目运算符 是先运算再赋值,遇到选择支时停止并行并判断条件。
通常情况下如果选用if-else一定要把概率大的放前面,如果无法选择出概率则选用三目运算符
注:可将一些if-else选择转换为位运算

例:if (data[c] >= 128)
    sum += data[c];
替换为:
int t = (data[c] - 128) >> 31;
sum += ~t & data[c];

浅谈分支预测、流水线与条件转移:http://www.cnblogs.com/yangecnu/p/introduce-branch-predict-pipelining-and-conditonal-move-instruction.html

你可能感兴趣的:(C)