C++基础 (1) 常见的易错问题
1 #include<iostream> 2 using namespace std; 3 int main(void) 4 { 5 /* 6 *True为1,False为0 7 */ 8 int x=2,y,z; 9 x*=(y=z=5);cout<<x<<endl;//结果10 10 z=3; 11 x==(y=z);cout<<x<<endl;//结果10 12 x=(y&z);cout<<x<<endl;//按位与。结果3 13 x=(y&&z);cout<<x<<endl;//与运算。结果1 14 y=4; 15 x=(y|z);cout<<x<<endl;//按位或。结果7 16 x=(y||z);cout<<x<<endl;//或运算。结果1 17 return 0; 18 }
我的理解,第9行,先计算括号内的,将5赋值给z,y,然后x=x*5.
第11行,是一个判断语句==符号并不会改变操作数的值.当为真,这个运算符返回1,否则0或FALSE.此处x值不变.
第12行,&是按位与运算.只有当两位都是1时才为真,即任意一边位为0,则该位按位与后结果为0.如1010&1001他结果等于1000.
同理,按位或|操作符是当两位有一位为1时,按位或的值就为1.如1010|1001结果为1011.
按位异或^操作符是仅当有且只有一位为1时按位异或结果才为1.如1010^1001结果为0011.
~是按位求反,~1001结果是0110.
<<在非输出流(cout)或重载情况下表示按位左移,右边0补齐,>>向右移.如int a=5;
a<<2 //00000101变成了00010100
&&,||,!是逻辑运算,或,与非,他们的结果只有TRUE或FALSE.
#include <iostream> using namespace std; void main() {int a=4,b=6,c=7;if(a==4||b++){cout<<"a="<<a<<" b="<<b<<endl;//a=4 b=6 }if(a==4&&b++){cout<<"a="<<a<<" b="<<b<<endl;//a=4 b=7 }if(a==b&&c++){cout<<"未跳过c="<<c<<endl;}elsecout<<"跳过 c="<<c<<endl; //跳过 c=7 }
逻辑或运算||是当两边表达式有一个为真该运算结果就为真,即当||左边表达式为真时不会计算右边表达式.&&操作符,当左边表达式为假时就不计算右边表达式,只有当左边为真时才会计算右边表达式.
如下代码:
1 using namespace std; 2 int TEMP=3; 3 int main(void) 4 { 5 /* 6 *C++全局变量与局部变量 7 */ 8 int TEMP=10; 9 ::TEMP++; 10 cout<<::TEMP<<endl;//结果为3 11 cout<<TEMP<<endl;//结果为10 12 return 0; 13 }
第2行声明并定义了全局变量TEMP,第8行声明了局部变量TEMP.那么在main函数中,直接使用TEMP指的是局部变量,即TEMP=10,使用全局变量可加全局作用域::
如下代码:
1 #include<iostream> 2 using namespace std; 3 int main(void) 4 { 5 int i=1,j=2; 6 int k=i+++j; 7 cout<<k<<endl;//结果是3 8 9 return 0; 10 }
如下代码:
1 a = 4; cout << a++ << a;
这是CSDN C++板块上置顶的一个,拿到这所的原因是现在的国家计算机二级考试常考这种题,我在两台电脑上用不同编译器得到的结果是不同的,所以记住一个规则:
任何依赖于特定计算顺序、依赖于在顺序点之间实现修改效果的表达式,其结果都没有保证。程序设计中应该贯彻的规则是:如果在任何“完整表达式”(形成一段由顺序点结束的计算)里存在对同一“变量”的多个引用,那么表达式里就不应该出现对这一“变量”的副作用。否则就不能保证得到预期结果
如下代码:
1 #include<iostream> 2 using namespace std; 3 int main(void) 4 { 5 /* 6 x=x+1,x+=1,x++;哪个效率最高,为什么? 7 x=x+1;效率最低,执行过程如下 8 1.读取右边x地址 9 2.x+1 10 3.读取左边x地址 11 4.将右值传给左边 12 x+=1;其次,执行过程如下 13 1.读取右边x地址 14 2.x+1 15 3.将值传给x 16 x++效率最高,执行过程如下 17 1.读取右边的x地址 18 2.x自增1 19 */ 20 return 0; 21 }
其实这个在汇编中很好解释,x=x+1相比x++要多使用几次寄存器,效率自然要低点,不过这种写法也不是特实用,毕竟现代的计算机已经非常快乐,一些特殊项目不算.
转载于:https://www.cnblogs.com/yTPety/archive/2013/03/03/CPP_basic.html
C++基础 (1) 常见的易错问题相关推荐
- JS基础--强制类型转换(易错点,自用)
1.将null和undefined转换为字符串: ① 使用toString函数:null和undefined没有tostring()方法,直接报错 ② 使用String函数:'null'.'undef ...
- 计算机信息处理技术的基础知识列举出一些易错易混淆知识点,计算机考证实训报告指导书.doc...
计算机考证实训报告指导书 实训目的: 掌握计算机信息处理与应用的基础知识,掌握以Windows XP和Microsoft Office 2003为工作平台,应用计算机高效率.高质量地进行信息处理的基本 ...
- 大数据基础系列 4:伪分布式 Hadoop 在 Ubuntu 上的安装流程完整步骤及易错点分析
文章目录 前言 一.创建 Ubuntu 用户 二.安装 Java 2.1.查看本地 Java 版本 2.2.验证 Java 在本地的配置情况 三.安装 ssh 服务 3.1.安装 openssh-se ...
- php易错,PHP学习1:几种常见数据类型及其易错点
PHP学习1:几种常见数据类型及其易错点 (本篇随笔就是关于几种常见数据类型及其易错点,适合初学者观看,并未包含全部九种数据类型,且通篇以代码和注释的形式来呈现.) /* 双引号字符串和单引号字符串之 ...
- 苏大计算机考研 操作系统常见易错知识点整理
苏大计算机考研 操作系统常见易错知识点整理 大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博主目前仅在CSDN中写博客,唯一博客更新的地 ...
- 【计算机与UNIX汇编原理⑫】——汇编考前复习【重要知识点 + 基础题 + 易错题 + 难题解析】
✅ 本文主要是在汇编考试前的做的复习整理. 文章目录 第一章:微型计算机基础 第二章:80X86微处理器 第三章:汇编语言指令集 第四章:汇编语言程序设计 五.参考附录 EDG 加油!⌨️ 上一篇文章 ...
- 软件设计师2010上午题基础知识(易错整理)
软件设计师2010上午题基础知识(易错整理) 2010 上半年 指令寄存器保存当前正在执行的指令,指令译码器测试指令操作码识别操作,地址寄存器保存当前CPU所访问的内存单元地址,程序计数器保存下一条指 ...
- SHU汇编程序设计常见考点、易错点总结与综合实例、汇编学习资源
文章目录 SHU汇编程序设计常见考点.易错点总结与综合实例.汇编学习资源 一.常见考点 1.寻址方式 2.移位 3.乘除运算 4.加减操作 5.取址操作 6.出入栈 7.中断 8.标志位 9.常见的字 ...
- 软件设计师2014上午题基础知识(易错整理)
软件设计师2014上午题基础知识(易错整理) 2014 上半年 木马程序的客户端运行在攻击者的机器上 海明码检验位计算:有效信息位 + 校验位个数 <= 2^校验位个数 - 1 防火墙工作层次越 ...
最新文章
- PDF编辑工具——PDF Desktop Converter 4 Professional
- AI一分钟 | “芯片门”影响仍在,英伟达旗下多款芯片也遭遇“幽灵”漏洞影响;贾跃亭邀媒体试乘法乐第FF91,你怎么看?
- tidb mysql hbase_HBase/TiDB都在用的数据结构:LSM Tree,不得了解一下?
- C++中的文件读写操作(2)
- linux多进程网络实例,Linux下一个单进程并发服务器的实例 使用select
- 文件服务器的配置与管理(3) 共享文件夹的创建与使用
- matlab实验题目,MATLAB实验题目
- 摘抄 Promise原理
- 关于eclipse中引入项目报错或者没有JRE System Library问题(jre报错)或者jre1.7(8)改为jre1.8(7)等问题...
- python求解二次规划问题
- TIS-prescan
- webstorm破解方法
- Java文件上传之断点续传解决方案
- pcap文件格式及写pcap文件
- 信号降噪方法——基于自适应神经模糊推理系统(ANFIS)的降噪处理
- DocumentFormat.OpenXml
- 计算机制图应用领域,计算机制图对测绘工程的应用
- 我是怎样通过软考网络工程师考试的
- 【Git】remote: error: cannot lock ref
- 理科生学计算机数字媒体方向,文科生,理科生,分别可以报哪些专业?5分钟了解文理报考大方向...