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) 常见的易错问题相关推荐

  1. JS基础--强制类型转换(易错点,自用)

    1.将null和undefined转换为字符串: ① 使用toString函数:null和undefined没有tostring()方法,直接报错 ② 使用String函数:'null'.'undef ...

  2. 计算机信息处理技术的基础知识列举出一些易错易混淆知识点,计算机考证实训报告指导书.doc...

    计算机考证实训报告指导书 实训目的: 掌握计算机信息处理与应用的基础知识,掌握以Windows XP和Microsoft Office 2003为工作平台,应用计算机高效率.高质量地进行信息处理的基本 ...

  3. 大数据基础系列 4:伪分布式 Hadoop 在 Ubuntu 上的安装流程完整步骤及易错点分析

    文章目录 前言 一.创建 Ubuntu 用户 二.安装 Java 2.1.查看本地 Java 版本 2.2.验证 Java 在本地的配置情况 三.安装 ssh 服务 3.1.安装 openssh-se ...

  4. php易错,PHP学习1:几种常见数据类型及其易错点

    PHP学习1:几种常见数据类型及其易错点 (本篇随笔就是关于几种常见数据类型及其易错点,适合初学者观看,并未包含全部九种数据类型,且通篇以代码和注释的形式来呈现.) /* 双引号字符串和单引号字符串之 ...

  5. 苏大计算机考研 操作系统常见易错知识点整理

    苏大计算机考研 操作系统常见易错知识点整理   大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博主目前仅在CSDN中写博客,唯一博客更新的地 ...

  6. 【计算机与UNIX汇编原理⑫】——汇编考前复习【重要知识点 + 基础题 + 易错题 + 难题解析】

    ✅ 本文主要是在汇编考试前的做的复习整理. 文章目录 第一章:微型计算机基础 第二章:80X86微处理器 第三章:汇编语言指令集 第四章:汇编语言程序设计 五.参考附录 EDG 加油!⌨️ 上一篇文章 ...

  7. 软件设计师2010上午题基础知识(易错整理)

    软件设计师2010上午题基础知识(易错整理) 2010 上半年 指令寄存器保存当前正在执行的指令,指令译码器测试指令操作码识别操作,地址寄存器保存当前CPU所访问的内存单元地址,程序计数器保存下一条指 ...

  8. SHU汇编程序设计常见考点、易错点总结与综合实例、汇编学习资源

    文章目录 SHU汇编程序设计常见考点.易错点总结与综合实例.汇编学习资源 一.常见考点 1.寻址方式 2.移位 3.乘除运算 4.加减操作 5.取址操作 6.出入栈 7.中断 8.标志位 9.常见的字 ...

  9. 软件设计师2014上午题基础知识(易错整理)

    软件设计师2014上午题基础知识(易错整理) 2014 上半年 木马程序的客户端运行在攻击者的机器上 海明码检验位计算:有效信息位 + 校验位个数 <= 2^校验位个数 - 1 防火墙工作层次越 ...

最新文章

  1. PDF编辑工具——PDF Desktop Converter 4 Professional
  2. AI一分钟 | “芯片门”影响仍在,英伟达旗下多款芯片也遭遇“幽灵”漏洞影响;贾跃亭邀媒体试乘法乐第FF91,你怎么看?
  3. tidb mysql hbase_HBase/TiDB都在用的数据结构:LSM Tree,不得了解一下?
  4. C++中的文件读写操作(2)
  5. linux多进程网络实例,Linux下一个单进程并发服务器的实例 使用select
  6. 文件服务器的配置与管理(3) 共享文件夹的创建与使用
  7. matlab实验题目,MATLAB实验题目
  8. 摘抄 Promise原理
  9. 关于eclipse中引入项目报错或者没有JRE System Library问题(jre报错)或者jre1.7(8)改为jre1.8(7)等问题...
  10. python求解二次规划问题
  11. TIS-prescan
  12. webstorm破解方法
  13. Java文件上传之断点续传解决方案
  14. pcap文件格式及写pcap文件
  15. 信号降噪方法——基于自适应神经模糊推理系统(ANFIS)的降噪处理
  16. DocumentFormat.OpenXml
  17. 计算机制图应用领域,计算机制图对测绘工程的应用
  18. 我是怎样通过软考网络工程师考试的
  19. 【Git】remote: error: cannot lock ref
  20. 理科生学计算机数字媒体方向,文科生,理科生,分别可以报哪些专业?5分钟了解文理报考大方向...

热门文章

  1. Java记录 -38- 随机数
  2. 学习日志-中缀表达式转后缀表达式并计算结果
  3. 1月第4周中美五大顶级域名总量涨幅相近 均有5.4万个
  4. ISAkmp载荷头部
  5. Learning Perl 4
  6. 【MONGODB】验证MONGODB 主从复制
  7. Android中的popupwindow从底部进入和退出的动画效果
  8. 怎么解决64位Access与32位不能同时安装的问题
  9. [TJOI2015]线性代数(最小割)
  10. HURST 1116:选美大赛(LIS+路径输出)