IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> c语言三目运算符的一些小细节,赋值不改变变量的值 -> 正文阅读

[C++知识库]c语言三目运算符的一些小细节,赋值不改变变量的值

C语言三目运算符的一些小细节,赋值不改变变量的值。

今天无聊翻翻C语言的课本,看到三目运算符的时候,心想这个和if else 语句用法一样,突然脑海里浮现一个想法,三目运算符结构(表达式1 ? 表达式2 :表达式3),“表达式1” 为逻辑表达式,如果为真(非0的值)则执行表达式2,如果为假(表达式1的值为0),则执行表达式3。 既然表达式1是逻辑表达式,如果记得没错在C语言中赋值语句也可以当逻辑表达式,其判断是赋值完成最后得到的值(为零则是假,非零则是真),所以当三目运算符的表达式1的值为赋值语句时,那肯定可以执行,万万没想到的是,猜中了开头,没猜中结尾。

#include<stdio.h>
 int main(){
	int x = 5, y;
	y = ( x = 1 ?  x++ : x);
	printf("x = %d, y = %d\n" ,x ,y);
	return 0;
	}

这是第一次想的测试代码,本来以为在执行完 x=1 后,x的值会随着发生改变,心想这玩意不就是if else 语句的简写吗,这有什么难的,可万万没想到的是,上机测试的时候,出问题了。
猜想结果(x = 2 , y = 1)。
在这里插入图片描述
测试结果出来后,这是怎么回事,和我想得不一样啊,怎么没有得到我想要的值,以为是我代码写错了,在经过排查后,没毛病啊,然后心想,这个和if else 语句一样, 换成if else 语句试试。
在这里插入图片描述
这,这是怎么回事,不敢相信,又回去测了一下三目运算符的例子。还是没有得到想要的结果,我炸了,难道是我把三目运算符的概念记错了?又赶紧去翻书。
在这里插入图片描述
没毛病啊,这是哪出了问题,一时间也想不过来,然后就去找各路神仙请教,经过讨论后,得到结果,三目运算符和if语句还是有区别的,三目运算符表达式1只是选择,不会改变其原有的值,但是if else 语句会。三目运算符的表达式1,只是逻辑判断(非0选择表达式2,否则选择表达式3),不会改变其原有的值,得到结果后,就去证实。

在这里插入图片描述

这时,经过执行表达式1后,选择执行表达式2,最后结果赋值给变量y,结果和猜测的一样,当然这一个例子还是无法证实。

在这里插入图片描述

经过测试后证实了我们的猜测,当然只是猜测,这也牵扯到了C语言的三目运算符和if else 语句的底层实现原理,那些知识还没学到,现在只能猜猜了,哈哈哈。测试时也遇见了新问题,发现编译器不同测试结果也略有不同,我用是vc++ 6.0 和 vc++ 2010,当用dev的测试第一个例子时出现了新的结果,有兴趣可以去试试哦。
由于目前知识有限,只能到这了,如果有新的猜测或者新的结果,当然还有知道C语言底层原理的童鞋,有兴趣欢迎帮我再补充哦。

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-11-19 17:27:06  更:2021-11-19 17:28:48 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 7:50:32-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码