C语言中的条件赋值语句和if——else语句执行效率比较,哪一个效率高些,坐等高手解惑
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言中的条件赋值语句和if——else语句执行效率比较,哪一个效率高些,坐等高手解惑相关的知识,希望对你有一定的参考价值。
比如说下面语句:
if(EngSB_flag==1) EngSB_count++;
else EngSB_count=0;
这是采用的if——else结构写的,现在由于执行效率问题,我想优化一下,于是改成下面所示的条件赋值语句:
EngSB_count=EngSB_flag ? (EngSB_flag+1):0;
两者的效果一样,所以就想问问哪一种形势的执行效率高一些,谢谢!
二、x++的效率比x=x+1要高,只是理论上,实际现在的机器性能很好,这个差异一般无法体现
综上所述,你上面的语句,用if else的效率要高。追问
谢谢你,再问一下,貌似所有的条件赋值语句都可以用if else替换,如果if else好些的话,为什么还存在条件赋值这个语法呢,这个条件赋值存在的意思是什么呢?我想它肯定有它特定的意义。
追答一、再次强调,一般情况下,条件语句与if的效率相同,我任何时候没有说过if的高
二、条件语句表达简单
三、这个效率的差异没必要计较
if(EngSB_flag==1) EngSB_count++;
else EngSB_count=0;
这是采用的if——else结构写的,现在由于执行效率问题,我想优化一下,于是改成下面所示的条件赋值语句:
EngSB_count=EngSB_flag ? (EngSB_flag+1):0;
两者的效果一样,所以就想问问哪一种形势的执行效率高一些,谢谢! 参考技术B 下面说了,我来做任务。。 参考技术C 可以看看生成的汇编代码,再分析,估计生成的代码都是一样的。不过这种优化优化不了多少,可能编译器已经给你优化了,还是想想在其他地方优化或者其他方法优化吧
C语言判断和循环介绍
一.判断介绍
判断是C语言最常用的语法之一,判断是满足某种条件时,执行对应语句的一种语法结构。
下面介绍工作中最常用的几种类型的判断语句
语句 | 介绍 | 使用场景 |
---|---|---|
if | 由一个布尔表达式后跟一个或多个语句组成。 | 需要满足某种单个条件时,执行的语句。 |
if…else | 一个 if 语句加上可选的 else 语句。 | 满足if条件时执行一种语句,不满足if条件时执行的另一种语句。 |
if…else if…else | 一个 if 语句加上可选的 else if 语句,再加上else 语句。 | 存在三种及三种以上条件时需要执行对应的语句,最后的else是所有条件都不满足时,需要执行的语句。 |
switch语句 | 一个 switch 语句由一个switch表达式、满足表达式case执行的语句和一个default执行语句组成。 | 存在三种以上不同的变量条件时,执行符合表达式case的后面的语句,当表达式的值与所有case后面的常量表达式的值都不相等时,执行default后面的语句。 |
二.实例演示
if…else
判断一个数是否是正数
#include <stdio.h>
bool IfPositiveNumber(int x);
bool IfPositiveNumber(int x)
if (x > 0)
printf("这个数为正数! \\n");
return true;
printf("这个数不是正数! \\n");
return false;
int main()
if (IfPositiveNumber(-1))
printf("条件为真! \\n");
else
printf("条件为假! \\n");
return 0;
if…else if…else
int main()
int a = 0;
if(a>0)
printf("这个数是正数! \\n");
else if(a<0)
printf("这个数是负数! \\n");
else
printf("这个数是0! \\n");
return 0;
三.switch语句介绍
为什么要使用switch语句?
从语句结构和可读角度:
1、switch语句是多分支选择语句.用来实现多分支选择结构.if语句只有两个分支可供选择,而实际问题中常常要用到多分支的选择。
2、这些都可以用嵌套的if语句来外理(if else if else),但如果分支较多,则嵌套的if语句层数多,程序沉余长而且可读性降低.C语言提供switch语句直接外理多分支选择。
如何使用switch语句?
switch语句格式:
switch (表达式)
case '常量表达式 1':
语句 1
case '常量表达式 2':
语句2
...
case '常量表达式 n':
语句n
default:
语句 n+1
switch使用注意点
先看一个例子
举例:
int main()
char grade = 'B';
switch (grade)
case 'A':
printf("85-100\\n");
case 'B':
printf("70-84\\n");
case 'C':
printf("60-69\\n");
case 'D':
printf("<60\\n");
default:
printf("error\\n");
这是一个根据等级来输出分数区间的例子。
注意点:
(1) switch括号内的"表达式",允许它为任何类型。
(2) 当表达式的值与某一个case后面的常量表达式的值相等时,就执行此case后面的语句,若所有的case中的常量表达式的值都没有与表达式的匹配的,就执行default后面的语句。
(3) 每一个case的常量表达式的值必须互不相同,否则就会出现互相矛盾的现象。
(4) 各个case和default的出现次序不影响执行结果。例如,可以先出现"default: …",再出现"case ‘C’: …",然后是"case ‘A’: …"
(5) 重要:执行完一个case后面的语句后,流程控制转移到下一个case继续执行."case常量表达式"只是起语句标号作用,并不是在该处进行条件判断.在执行swith语句时,根据switch后面表达式的值找到匹配的入口标号,就从此标号开始执行下去,不再进行判断。
所以,以上的结果是
若想执行符合的语句后就停止执行,需要加上break。
char grade = 'B';
switch (grade)
case 'A':
printf("85-100\\n");
break;
case 'B':
printf("70-84\\n");
break;
case 'C':
printf("60-69\\n");
break;
case 'D':
printf("<60\\n");
break;
default:
printf("error\\n");
四.循环介绍
循环在各种语言中的使用也是非常多,主要的用途在于处理大量数据、遍历、长稳运行(重复运行)等等。
在C语言中,可以使用三种循环方式
语句 | 说明 |
---|---|
for | 多次执行一个语句,简化写代码的次数。 |
while | 当while中的条件为真时,反复执行while中的语句,直到条件语句不再符合。 |
do…while | 在循环主体的结尾进行条件判断,其余和while类似。 |
for循环
int main()
for (int i = 0; i < 100; i++)
if (i % 2 == 0)
printf("i=%d\\n",i);
return 0;
注意:for 循环头部中的三个表达式可以省略一个或多个。这意味着 for 循环头部最短的形式是:for ( ; ; )
while
int main()
int i = 0;
while (i < 100)
if (i % 2 == 0)
printf("i=%d\\n", i);
i++;
return 0;
注意:
一般来说,当循环内有计数器或索引变量需要被初始化,并且在每次循环时需要调整它们的值时,最好使用 for 循环,而不是 while 循环。
do…while
int main()
do
if (i % 2 == 0)
printf("i=%d\\n", i);
i++;
while (i < 100);
return 0;
注意:
1.do…while格式中,在最后的while()后要加上;
2.在控制表达式被第一次计算之前,循环体语句会首先被执行一次。与 while 和 for 循环不同,do…while 循环会确保循环体语句至少执行一次。如果控制表达式的值为 true,那么另一次循环就会继续;如果是 false,则循环结束。
以上三个例子都是输出100以内的偶数。
感谢阅读!!!
以上是关于C语言中的条件赋值语句和if——else语句执行效率比较,哪一个效率高些,坐等高手解惑的主要内容,如果未能解决你的问题,请参考以下文章