C/C++条件表达式

C/C++条件表达式使用三目运算符 ?:完成,适当条件下可与 if else 语句相互替换。 条件表达式优点在于可直接返回表达式运算的结果。

条件表达式的使用分为三个部分,示例如下:

c ? a : b;

其中 c 为判断条件,a,b 可为具体的值或是算式。 表达式先对 c 进行判断,若 c 的判断结果不为 0 (或 true),返回 a 的值或运算结果;若 c 的判断结果为 0 (或 false),则返回 b 的值或运算结果。如下:

a,b 为具体数值:

a > b ? a : b;

a,b 为算式:

a > b ? (a - b) : (b - a);

示例程序: 求两个数中的最大值:

#include <stdio.h>

int main() {
	int a, b, max;
	
	scanf("%d%d", &a, &b);
	
	max = a > b ? a : b;
	
	printf("%d", max);
	
	return 0;
} 

等同于

#include <stdio.h>

int main() {
	int a, b, max;
	
	scanf("%d%d", &a, &b);
	
	if (a > b) {
		max = a;	
	} else {
		max = b;	
	}
	
	printf("%d", max);
	
	return 0;
} 

示例程序: 求两个数的差,结果总是为大的数减去小的数

#include <stdio.h>

int main() {
	int a, b, res;
	
	scanf("%d%d", &a, &b);
	
	res = a > b ? (a - b) : (b - a);
	
	printf("%d", res);
	
	return 0;
} 

等同于

#include <stdio.h>

int main() {
	int a, b, res;
	
	scanf("%d%d", &a, &b);
	
	if (a > b) {
		res = a - b;
	} else {
		res = b - a;
	}
	
	printf("%d", res);
	
	return 0;
} 

我们还可以将表达式直接输出或者将其作为函数返回值。

直接输出表达式:

#include <stdio.h>

int main() {
	int a, b;
	
	scanf("%d%d", &a, &b);
	
	printf("%d", a > b ? a : b);
	
	return 0;
}

表达式作为函数返回值:

#include <stdio.h>

int getMax(int a, int b) {
	
	return a > b ? a : b;
} 

int main() {
	int a, b, max;
	
	scanf("%d%d", &a, &b);
	
	max = getMax(a, b);
	
	printf("%d", max);
	
	return 0;
}

毕。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 求最大数(题目来源:JLOJ2331)

    Description 由键盘输入任意 3 个整数 x,y,z,求这 3 个数中的最大数并输出。

    英雄爱吃土豆片
  • PTA刷题记录:L1-027 出租 (20分)

    一时间网上一片求救声,急问这个怎么破。其实这段代码很简单,index数组就是arr数组的下标,index[0]=2 对应 arr[2]=1,index[1]...

    英雄爱吃土豆片
  • OJ刷题记录:L1-108-神奇的水管(20分)

    X星球上的水路布局所使用的水管是很特殊的, 一共有6个开口, 上,下,左,右,左上,右下. 假定我们将两个开口相连的水管认为是同一个水管, 请你编程求出X星球上...

    英雄爱吃土豆片
  • Golang Leetcode 581. Shortest Unsorted Continuous Subarray.go

    a. 当我们找到第一个违反ascending 排序的数字 2的时候,我们不能是仅仅把beg 标记为2的前面一个数字7,而是要一直往前,找到一个合适的位置,找到在...

    anakinsun
  • 【算法】相邻最大差值

    给定一个数组,求如果排序之后,相邻两数的最大差值,要求时间复杂度O(N) 例子: 5,9,8,3,15 那么排序后的数,3,5,8,9,15,因此相邻最大...

    MapleYe
  • as3中颜色矩阵滤镜ColorMatrixFilter的使用

    上面的例子,也是游戏开发中比较常用的功能,与“怪物”战斗后,将其“灰”掉。这其中最重要的还是对AS3颜色矩阵滤镜(ColorMatrixFilter)的使用。

    meteoric
  • 检测一个int n是否是k的整数次幂的通用方法

    1.如果k是质数,那么先求出int范围内能被表示的最大的k的x次方——max,然后判断max%n==0。 例如判断一个数n是否是3的指数次幂: int max...

    kalifa_lau
  • AtomicInteger源码分析详解

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    suveng
  • LeetCode Weekly Contest 29解题思路

    代码很简单,简单说明下思路就出来了。按照题意,不管怎么二分,整个数组都会被划分成两部分和,这两部分和必然一大一小。如nums = [1,4,3,2],划分如下[...

    用户1147447
  • codeforces 1272D(dp)

    You are given an array a consisting of n integers.

    dejavu1zz

扫码关注云+社区

领取腾讯云代金券