c语言中,三木运算符和if语句哪个效率更高一些?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言中,三木运算符和if语句哪个效率更高一些?相关的知识,希望对你有一定的参考价值。

效率区别不是太明显,三木运算符主要可以解决最简单的逻辑判断兼顾代码的可读性。如果有复杂的逻辑,当然用三木运算符就不容易表达或者可读性就差了。
所以使用三目运算符还是if语句重点不是考虑效率的问题。
参考技术A 你好!
如果你追求这么高的效率,测试一下就得了,三目运算符其实就是
if
语句的替代品,
C语言中基本上没有差别,有空研究这个差别,还不如看看你的算法。在
C++里面if语句可能会影响返回值优化而已(NRV优化)
仅代表个人观点,不喜勿喷,谢谢。
参考技术B if更高,三元是语法糖,语法糖编译后的代码就是if。直接写if,肯定if快,但如果编译时,其实一样,因为语法糖已经编译成if了。

JAVASE知识-03(运算符&if语句)

逻辑运算符基本用法


&&和& 执行结果一样
其中&&具有短路效果,左边是False 则右边不执行,效率更高

||和| 同理 执行结果一样
其中||具有短路效果,左边是True 则右边不执行,效率更高

System.out.println(~6); //-7 ?

^位异或运算符的特点

上面结果为5, 下面结果为10

实现两个整数变量交换,(不需要定义第三方变量)
int x=10; int y=5;

左移右移 位运算符

键盘录入的基本格式

import java.util.Scanner;
class Demo_Scanner {
        public static void main(String[] args){
        Scanner sc = new Scanner(System.in);     //创建键盘录入对象
        System.out.println("请输入一个整数");
        int x = sc.nextInt();                     //将键盘录入的数据存储在x中
        System.out.println(x);
        }
}

只能输入整数, 如果输入字母或小数会报错

录入两个数, 比较两个数是否相等

switch建议判断固定值的时候用
if建议判断区间或范围的时候用

	/*

		* 键盘录入月份,输出对应的季节
		一年有四季
		3,4,5春季
		6,7,8夏季
		9,10,11秋季
		12,1,2冬季
		*/

import java.util.Scanner;
class Test3_SwitchIf {
	public static void main(String[] args) {
	
		Scanner sc = new Scanner(System.in);	//创建键盘录入对象
		System.out.println("请输入月份");
		int month = sc.nextInt();				//将键盘录入的结果存储在month
		/*switch (month) {
		case 3:
		case 4:
		case 5:
			System.out.println(month + "月是春季");
		break;
		case 6:
		case 7:
		case 8:
			System.out.println(month + "月是夏季");
		break;
		case 9:
		case 10:
		case 11:
			System.out.println(month + "月是秋季");
		break;
		case 12:
		case 1:
		case 2:
			System.out.println(month + "月是冬季");
		break;
		default:
			System.out.println("对不起没有对应的季节");
		break;
		}*/

		//用if语句来完成月份对应季节
		if (month > 12 || month < 1) {
			System.out.println("对不起没有对应的季节");
		}else if (month >= 3 && month <= 5) {
			System.out.println(month + "月是春季");
		}else if (month >= 6 && month <= 8) {
			System.out.println(month + "月是夏季");
		}else if (month >= 9 && month <= 11) {
			System.out.println(month + "月是秋季");
		}else {
			System.out.println(month + "月是冬季");
		}
	}
}
  • a:case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的
  • b:default可以省略吗?
    • 可以省略,但是不建议,因为它的作用是对不正确的情况给出提示。
    • 特殊情况:
    • case就可以把值固定。
    • A,B,C,D
  • c:break可以省略吗?
    • 最后一个可以省略,其他最好不要省略
    • 会出现一个现象:case穿透。
    • 最终我们建议不要省略
  • d:default一定要在最后吗?
    • 不是,可以在任意位置。但是建议在最后。
  • e:switch语句的结束条件
    • a:遇到break就结束了
    • b:执行到switch的右大括号就结束了

以上是关于c语言中,三木运算符和if语句哪个效率更高一些?的主要内容,如果未能解决你的问题,请参考以下文章

c语言中strcpy跟mencpy哪个效率更高?

Oracle 数据库 SQL效率问题,下面语句的结果一样吗?如果一样哪个效率更高?

C语言中的条件赋值语句和if——else语句执行效率比较,哪一个效率高些,坐等高手解惑

编程语言中IF语句与CASE语句的效率问题

JAVASE知识-03(运算符&if语句)

求一些C语言if嵌套语句算法题