C和CPP关于条件运算符的区别

条件运算符形式:

cond ? expr1 : expr2;

在C语言中执行过程是:

先对cond求值,值为真返回expr1的值,否则返回expr2的值.(右值)

gcc测试结果:

在Cpp中如果两个表达式都是左值的话,那么运算的结果也是左值(也就是表达式本身,我给表达式赋值并打印出来),否则就是右值。

时间: 2024-11-09 00:48:24

C和CPP关于条件运算符的区别的相关文章

IOS问题汇总:2015-1-9 【iOS开发】.h,.m,.mm,.cpp等区别

[iOS开发].h,.m,.mm,.cpp等区别 文件区别: .h :头文件.头文件包含类,类型,函数和常数的声明. .m :源代码文件.这是典型的源代码文件扩展名,可以包含Objective-C和C代码. .mm :源代码文件.带有这种扩展名的源代码文件,除了可以包含Objective-C和C代码以外还可以包含C++代码.仅在你的Objective-C代码中确实需要使用C++类或者特性的时候才用这种扩展名 .cpp:只能编译C++ 当你需要在源代码中包含头文件的时候,你可以使用标准的#incl

【转】C与CPP后缀的文件在编译时的区别

本文出处连接, by Ray FAN([email protected]) 今天又发现了我的一个“不良习惯”,C语言的源文件用C还是CPP做后缀完全视心情而定,今天我就尝到苦头了,工程总是编不过去,准确的说是链接错误,后来发现工程下的文件多是c后缀的,只有一个是cpp后缀的,就把cpp后缀的改成了c后缀,编译.链接,OK了. 在Google上搜索了一圈,发现就这一问题的文章比较少,也不是很系统,所以有了此篇小文,也是为了加深我的印象. 结论:            1.gcc认为.c的为C程序,

(原).cc 和 .cpp 后缀结尾的文件的区别

This caused a few problems the first time C++ was ported to a system where case wasn't significant in the filename, however, and different users adopted different solutions: .cc, .cpp, .cxx and possibly others. Today, 非UNIX 系统中 .cpp Unix 系统中常用 .cc (原

IOS Xcode开发中的文件后缀名区别m,mm,cpp,h

.h :头文件.头文件包含类,类型,函数和常数的声明. .m :源代码文件.这是典型的源代码文件扩展名,可以包含Objective-C和C代码. .mm :源代码文件.带有这种扩展名的源代码文件,除了可以包含Objective-C和C代码以外还可以包含C++代码.仅在你的Objective-C代码中确实需要使用C++类或者特性的时候才用这种扩展名 .cpp:只能编译C++ 当你需要在源代码中包含头文件的时候,你可以使用标准的#include编译选项,但是Objective-C提供了更好的方法.#

[CPP]push_back和emplace_back的区别

emplace_back和push_back是cpp11的新特性之一,都是对vector内添加元素的方法. 区别在于: push_bach(): 首先需要调用构造函数构造一个临时对象,然后调用拷贝构造函数将这个临时对象放入容器中,然后释放临时变量. emplace_back(): 这个元素原地构造,不需要触发拷贝构造和转移构造. 如果使用push_back,由于每次需要调用析构函数,所以理论上emplace_back比push_back更快一点. 原文地址:https://www.cnblogs

CPP 学习笔记随笔

CPP对象模型 何为C++对象模型? C++对象模型可以概括为以下2部分: 语言中直接支持面向对象程序设计的部分 对于各种支持的底层实现机制 语言中直接支持面向对象程序设计的部分,如构造函数.析构函数.虚函数.继承(单继承.多继承.虚继承).多态等等,这也是组里其他同学之前分享过的内容.第一部分这里我简单过一下,重点在底层实现机制. 在c语言中,"数据"和"处理数据的操作(函数)"是分开来声明的,也就是说,语言本身并没有支持"数据和函数"之间的关

指针和指针运算符一起时的运算规则(比如*p++和*++p的区别)

接下来,通过示例彻底理解自增运算符的两种用法(自减的用法与之类似,只不过是加1变成了减1). 1.++i和i++的区别 如清单1(注意代码中的注释): [cpp] view plaincopy #include <stdio.h> int main(void) { int a, b, i = 7; i++; //等价于i = i + 1; ++i; //等价于i = i + 1; a = i++; //等价于a = i; i = i + 1; b = ++i; //等价于i = i + 1; 

LIB和DLL的区别与使用(转载)

转载自:http://www.cppblog.com/amazon/archive/2009/09/04/95318.html 共有两种库:一种是LIB包含了函数所在的DLL文件和文件中函数位置的信息(入口),代码由运行时加载在进程空间中的DLL提供,称为动态链接库dynamic link library.一种是LIB包含函数代码本身,在编译时直接将代码加入程序当中,称为静态链接库static link library.共有两种链接方式:动态链接使用动态链接库,允许可执行模块(.dll文件或.e

Android Serializable与Parcelable原理与区别

一.序列化.反序列化是什么? (1) 名词解释 对象的序列化 : 把Java对象转换为字节序列并存储至一个储存媒介的过程.对象的反序列化:把字节序列恢复为Java对象的过程. (2) 序列化详细解释 对象的序列化涉及三个点关键点:Java对象.字节序列.存储. 1. Java对象的组成?Java对象包含变量与方法.但是序列与反序列化仅处理Java变量而不处理方法,序列与反序列化仅对数据进行处理. 2. 什么是字符序列?字符序列是两个词,字符是在计算机和电信领域中,字符(Character)是一个