- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章详解C++编程中运算符的使用由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
C++的运算符十分丰富,使得C++的运算十分灵活方便。例如把赋值号(=)也作为运算符处理,这样,a=b=c=4就是合法的表达式,这是与其他语言不同的。C++提供了以下运算符: 算术运算符 +(加) -(减) *(乘) /(除) %(整除求余) ++(自加) --(自减) 关系运算符 >(大于) <(小于) ==(等于) >=(大于或等于) <=(小于或等于) !=(不等于) 逻辑运算符 &&(逻辑与) ||(逻辑或) !(逻辑非) 位运算符 <<(按位左移) >>(按位右移) &(按位与) |(按位或) ^(按位异或) ~(按位取反) 赋值运算符 (=及其扩展赋值运算符) 条件运算符 (?:) 逗号运算符 (,) 指针运算符 (*) 引用运算符和地址运算符 (&) 求字节数运算符(sizeof) 强制类型转换运算符( (类型) 或类型( )) 成员运算符 (.) 指向成员的运算符 (->) 下标运算符 ([ ]) 其他 (如函数调用运算符()) 。
基本的算术运算符 。
在本章中主要介绍算术运算符与算术表达式,赋值运算符与赋值表达式,逗号运算符与逗号表达式,其他运算符将在以后各章中陆续介绍.
需要说明,两个整数相除的结果为整数,如5/3的结果值为1,舍去小数部分。但是,如果除数或被除数中有一个为负值,则舍入的方向是不固定的。例如,-5/3在有的C++系统上得到结果-1,有的C++系统则给出结果-2。多数编译系统采取“向零取整”的方法,即5/3的值等于1,-5/3的值等于-1,取整后向零靠拢.
如果参加+, -, *, / 运算的两个数中有一个数为float型数据,则运算的结果是double型,因为C++在运算时对所有float型数据都按double型数据处理。 算术表达式和运算符的优先级与结合性 。
用算术运算符和括号将运算对象(也称操作数)连接起来的、符合C++语法规则的式子,称C++算术表达式。运算对象包括常量、变量、函数等。例如,下面是一个合法的C++算术表达式:
1
|
a*b/c-1.5+
'a'
|
C++语言规定了运算符的优先级和结合性。在求解表达式时,先按运算符的优先级别高低次序执行,例如先乘除后加减。如有表达式a-b*c,b的左侧为减号,右侧为乘号,而乘号优先于减号,因此,相当于a-(b*c)。如果在一个运算对象两侧的运算符的优先级别相同,如a-b+c,则按规定的“结合方向”处理.
C++规定了各种运算符的结合方向(结合性),算术运算符的结合方向为“自左至右”,即先左后右,因此b先与减号结合,执行a-b的运算,再执行加c的运算。“自左至右的结合方向”又称“左结合性”,即运算对象先与左面的运算符结合。以后可以看到有些运算符的结合方向为“自右至左”,即右结合性(例如赋值运算符)。关于“结合性”的概念在其他一些高级语言中是没有的,是C和C++的特点之一,希望能弄清楚.
表达式中各类数值型数据间的混合运算 。
在表达式中常遇到不同类型数据之间进行运算,如:
1
|
10+
'a'
+1.5-8765.1234*
'b'
|
在进行运算时,不同类型的数据要先转换成同一类型,然后进行运算。转换的规则按图所示.
假设已指定i为整型变量,f为float变量,d为double型变量,e为long型,有下面表达式:
1
|
10+
'a'
+i*f-d/e
|
运算次序为: 进行10+'a'的运算,先将'a'转换成整数97,运算结果为107。 进行i*f的运算。先将i与f都转换成double型,运算结果为double型。 整数107与i*f的积相加。先将整数107转换成双精度数(小数点后加若干个0,即107.000…00),结果为double型。 将变量e转换成double型,d/e结果为double型。 将10+'a'+i*f的结果与d/e的商相减,结果为double型.
上述的类型转换是由系统自动进行的.
C++自增和自减运算符(--和++) 在C和C++中,常在表达式中使用自增(++)和自减(--)运算符,他们的作用是使变量的值增1或减1,如: ++i(在使用i之前,先使i的值加1,如果i的原值为3,则执行j=++i后,j的值为4) --i (在使用i之前,先使i的值减1,如果i的原值为3,则执行j=--i后,j的值为2) i++ (在使用i之后,使i的值加1,如果i的原值为3,则执行j=i++后,j的值为3,然后i变为4) i--(在使用i之后,使i的值减1,如果i的原值为3,则执行j=i--后,j的值为3,然后i变为2) ++i是先执行i=i+1后,再使用i的值;而i++是先使用i的值后,再执行i=i+1.
正确地使用++和--,可以使程序简洁?清晰?高效。请注意: 自增运算符(++)和自减运算符(--)只能用于变量,而不能用于常量或表达式。 ++和--的结合方向是“自右至左”。 自增运算符(++)和自减运算符(--)使用十分灵活,但在很多情况下可能出现歧义性,产生“意想不到”的副作用。 自增(减)运算符在C++程序中是经常见到的,常用于循环语句中,使循环变量自动加1。也用于指针变量,使指针指向下一个地址.
最后此篇关于详解C++编程中运算符的使用的文章就讲到这里了,如果你想了解更多关于详解C++编程中运算符的使用的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
#include using namespace std; class C{ private: int value; public: C(){ value = 0;
这个问题已经有答案了: What is the difference between char a[] = ?string?; and char *p = ?string?;? (8 个回答) 已关闭
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 7 年前。 此帖子已于 8 个月
除了调试之外,是否有任何针对 c、c++ 或 c# 的测试工具,其工作原理类似于将独立函数复制粘贴到某个文本框,然后在其他文本框中输入参数? 最佳答案 也许您会考虑单元测试。我推荐你谷歌测试和谷歌模拟
我想在第二台显示器中移动一个窗口 (HWND)。问题是我尝试了很多方法,例如将分辨率加倍或输入负值,但它永远无法将窗口放在我的第二台显示器上。 关于如何在 C/C++/c# 中执行此操作的任何线索 最
我正在寻找 C/C++/C## 中不同类型 DES 的现有实现。我的运行平台是Windows XP/Vista/7。 我正在尝试编写一个 C# 程序,它将使用 DES 算法进行加密和解密。我需要一些实
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
有没有办法强制将另一个 窗口置于顶部? 不是应用程序的窗口,而是另一个已经在系统上运行的窗口。 (Windows, C/C++/C#) 最佳答案 SetWindowPos(that_window_ha
假设您可以在 C/C++ 或 Csharp 之间做出选择,并且您打算在 Windows 和 Linux 服务器上运行同一服务器的多个实例,那么构建套接字服务器应用程序的最明智选择是什么? 最佳答案 如
你们能告诉我它们之间的区别吗? 顺便问一下,有什么叫C++库或C库的吗? 最佳答案 C++ 标准库 和 C 标准库 是 C++ 和 C 标准定义的库,提供给 C++ 和 C 程序使用。那是那些词的共同
下面的测试代码,我将输出信息放在注释中。我使用的是 gcc 4.8.5 和 Centos 7.2。 #include #include class C { public:
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
我的客户将使用名为 annoucement 的结构/类与客户通信。我想我会用 C++ 编写服务器。会有很多不同的类继承annoucement。我的问题是通过网络将这些类发送给客户端 我想也许我应该使用
我在 C# 中有以下函数: public Matrix ConcatDescriptors(IList> descriptors) { int cols = descriptors[0].Co
我有一个项目要编写一个函数来对某些数据执行某些操作。我可以用 C/C++ 编写代码,但我不想与雇主共享该函数的代码。相反,我只想让他有权在他自己的代码中调用该函数。是否可以?我想到了这两种方法 - 在
我使用的是编写糟糕的第 3 方 (C/C++) Api。我从托管代码(C++/CLI)中使用它。有时会出现“访问冲突错误”。这使整个应用程序崩溃。我知道我无法处理这些错误[如果指针访问非法内存位置等,
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 7 年前。
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,因为
我有一些 C 代码,将使用 P/Invoke 从 C# 调用。我正在尝试为这个 C 函数定义一个 C# 等效项。 SomeData* DoSomething(); struct SomeData {
这个问题已经有答案了: Why are these constructs using pre and post-increment undefined behavior? (14 个回答) 已关闭 6
我是一名优秀的程序员,十分优秀!