本文主要是介绍三目运算符在c和c++编译器的表现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
(1)
当三目运算符做左值时,c语言返回的是变量的值;c++返回的是变量本身;c语言中的三目运算符返回的是变量值,不能做为 左值使用。c++中的三目运算符可直接返回变量本身,因此可以出现在程序的任何地方。
(2) 注意:三目运算符可能返回的值如果有一个是常量值,则不能作为左值使用,比如下面的语句:(a<b?1:b)=30;
(3) c语言如何支持类似c++的特性呢?
当左值的条件,其是有内存空间的,即其是一个变量;c++编译器帮助程序员取了一个地址而已。具体可以看如下代码:
#include <iostream>
using namespace std;//在C语言中 表达式的结果 放在什么地方 寄存器
//1
// 在C语言中, 表达式的返回值 是变量的值
// 在C++中, 表达式返回的是变量的本身 //2 如何做到的
//让表达式返回一个内存空间 ..内存首地址 指针
//在C语言中 如何 实现 c++的效果,可以改成 *(a<b>&a:&b)=10; 这样子语句在c编译器中也可以达到同样的效果//3 本质
//c++编译器 帮我们程序员完成了 取地址的工作 int main()
{int a = 10;int b = 20;int var = 100;var = 101;//返回一个最小数 并且给最小数赋值成3//三目运算符是一个表达式 ,表达式不可能做左值(a < b ? a : b) = 30; //这条语句在c++编译器中可以运行,在c编译器中运行失败,这是c++对c的扩展.//int z = (a < b ? a : b );printf("a = %d, b = %d\n", a, b);system("pause");return 0;
}
这篇关于三目运算符在c和c++编译器的表现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!