龙听期货论坛's Archiver

龙听 发表于 2024-11-30 18:52

C++程序化/量化学习视频教程系列 第018节:C语言知识点之运算符(算术运算符、关系运算符、逻辑运算符)知识及C++量化开发中的注意事项【C++量化开发知识点系列】

C++程序化/量化学习视频教程系列 第018节:C语言知识点之运算符(算术运算符、关系运算符、逻辑运算符)知识及C++量化开发中的注意事项【C++量化开发知识点系列】

[mp4]http://mp4.qhlt.club/Cpp-Video/018.mp4[/mp4]

C++程序化学习视频教程系列安排如下:
第一楼:教学视频。一般控制在15分钟左右;
第二椄:视频课程中使用的程式源码。
第三楼:视频教学中需要用到的一些文档或资源。
第四楼:其它的一些边角料,特别是一些经典程序化策略的回测类的部分会放到下面楼层里面。

参与模式如下:
1、希望参与到编写策略与调试方面的工作通过上面的联系方式联系管理员咨询即可。记的加群,有问题第一时间交流,也可以在论坛指定版发贴交流,专用版地址:[url=http://www.qhlt.cn/forum-244-1.html]http://www.qhlt.cn/forum-244-1.html[/url];
2、有意申请试用及绑定期货账户跑实盘网友可以联系管理员,以及开通的方式。
3、基于C++策略交易软件具有:1、软件小(50兆不到);2、效率高(C++语言);3、功能精(专注于策略);4、对服务噐或电脑兼容性好(WIN系统)等优势,特别适合长期跑程序化的客户朋友,特别是有稳定交易模式客户更适合使用C++构建的交易系统。
4、最全的C++期货程序化(量化)教程、视频、源码、课件、资源汇总贴【C++期货程序化/量化研究必备资源贴!】:[url=http://www.qhlt.cn/thread-160231-1-1.html]http://www.qhlt.cn/thread-160231-1-1.html[/url];
5、鼎元C++量化程式码技术指标源码C++版模板【建议在test.h和test.cpp中同步至最新,方便统一调用和使用,一次编辑多次使用!】:[url=http://www.qhlt.cn/thread-160230-1-1.html]http://www.qhlt.cn/thread-160230-1-1.html[/url];
6、如何使用鼎元C++量化软件以及需要准备的些什么?[C++量化入门必读!]:[url=http://www.qhlt.cn/thread-160415-1-1.html]http://www.qhlt.cn/thread-160415-1-1.html[/url];

联系方式:
C++微信群:[img=180,180]http://p.algo2.net/2024/0922/23852f86ccf81.png[/img]  QQ群:[img=140,180]http://p.algo2.net/2024/0115/3c6af4df957c3.jpg[/img] 管理员微信:[img]http://www.qhlt.cn/link/wx.png[/img];管理员QQ:[img]http://www.qhlt.cn/link/q.png[/img]

龙听 发表于 2024-11-30 18:55

算术运算符
下表显示了 C++ 支持的算术运算符。
假设变量 A 的值为 10,变量 B 的值为 20,则:[table]
[tr][td]运算符[/td][td]描述[/td][td]实例[/td][/tr]
[tr][td]+[/td][td]把两个操作数相加[/td][td] A + B 将得到 30[/td][/tr]
[tr][td]-[/td][td]从第一个操作数中减去第二个操作数[/td][td] A - B 将得到 -10[/td][/tr]
[tr][td]*[/td][td]把两个操作数相乘[/td][td] A * B 将得到 200[/td][/tr]
[tr][td]/[/td][td]分子除以分母[/td][td] B / A 将得到 2[/td][/tr]
[tr][td]%[/td][td]取模运算符,整除后的余数[/td][td] B % A 将得到 0[/td][/tr]
[tr][td]++[/td][td][url=https://www.runoob.com/cplusplus/cpp-increment-decrement-operators.html]自增运算符[/url],整数值增加 1[/td][td] A++ 将得到 11[/td][/tr]
[tr][td]--[/td][td][url=https://www.runoob.com/cplusplus/cpp-increment-decrement-operators.html]自减运算符[/url],整数值减少 1[/td][td] A-- 将得到 9[/td][/tr]
[/table]实例
请看下面的实例,了解 C++ 中可用的算术运算符。
复制并粘贴下面的 C++ 程序到 test.cpp 文件中,编译并运行程序。

龙听 发表于 2024-11-30 18:56

[code]#include <iostream>
using namespace std;

int main()
{
   int a = 21;
   int b = 10;
   int c;

   c = a + b;
   cout << "Line 1 - c 的值是 " << c << endl ;
   c = a - b;
   cout << "Line 2 - c 的值是 " << c << endl ;
   c = a * b;
   cout << "Line 3 - c 的值是 " << c << endl ;
   c = a / b;
   cout << "Line 4 - c 的值是 " << c << endl ;
   c = a % b;
   cout << "Line 5 - c 的值是 " << c << endl ;

   int d = 10;   //  测试自增、自减
   c = d++;
   cout << "Line 6 - c 的值是 " << c << endl ;

   d = 10;    // 重新赋值
   c = d--;
   cout << "Line 7 - c 的值是 " << c << endl ;
   return 0;
}[/code]

龙听 发表于 2024-11-30 18:56

关系运算符
下表显示了 C++ 支持的关系运算符。
假设变量 A 的值为 10,变量 B 的值为 20,则:[table]
[tr][td]运算符[/td][td]描述[/td][td]实例[/td][/tr]
[tr][td]==[/td][td]检查两个操作数的值是否相等,如果相等则条件为真。[/td][td] (A == B) 不为真。[/td][/tr]
[tr][td]!=[/td][td]检查两个操作数的值是否相等,如果不相等则条件为真。[/td][td] (A != B) 为真。[/td][/tr]
[tr][td]>[/td][td]检查左操作数的值是否大于右操作数的值,如果是则条件为真。[/td][td] (A > B) 不为真。[/td][/tr]
[tr][td]<[/td][td]检查左操作数的值是否小于右操作数的值,如果是则条件为真。[/td][td] (A < B) 为真。[/td][/tr]
[tr][td]>=[/td][td]检查左操作数的值是否大于或等于右操作数的值,如果是则条件为真。[/td][td] (A >= B) 不为真。[/td][/tr]
[tr][td]<=[/td][td]检查左操作数的值是否小于或等于右操作数的值,如果是则条件为真。[/td][td] (A <= B) 为真。[/td][/tr]
[/table]实例
请看下面的实例,了解 C++ 中可用的关系运算符。
复制并黏贴下面的 C++ 程序到 test.cpp 文件中,编译并运行程序。

龙听 发表于 2024-11-30 18:56

[code]#include <iostream>
using namespace std;

int main()
{
   int a = 21;
   int b = 10;
   int c ;

   if( a == b )
   {
      cout << "Line 1 - a 等于 b" << endl ;
   }
   else
   {
      cout << "Line 1 - a 不等于 b" << endl ;
   }
   if ( a < b )
   {
      cout << "Line 2 - a 小于 b" << endl ;
   }
   else
   {
      cout << "Line 2 - a 不小于 b" << endl ;
   }
   if ( a > b )
   {
      cout << "Line 3 - a 大于 b" << endl ;
   }
   else
   {
      cout << "Line 3 - a 不大于 b" << endl ;
   }
   /* 改变 a 和 b 的值 */
   a = 5;
   b = 20;
   if ( a <= b )
   {
      cout << "Line 4 - a 小于或等于 b" << endl ;
   }
   if ( b >= a )
   {
      cout << "Line 5 - b 大于或等于 a" << endl ;
   }
   return 0;
}[/code]

龙听 发表于 2024-11-30 18:56

逻辑运算符
下表显示了 C++ 支持的关系逻辑运算符。
假设变量 A 的值为 1,变量 B 的值为 0,则:[table]
[tr][td]运算符[/td][td]描述[/td][td]实例[/td][/tr]
[tr][td]&&[/td][td]称为逻辑与运算符。如果两个操作数都 true,则条件为 true。[/td][td] (A && B) 为 false。[/td][/tr]
[tr][td]||[/td][td]称为逻辑或运算符。如果两个操作数中有任意一个 true,则条件为 true。[/td][td] (A || B) 为 true。[/td][/tr]
[tr][td]![/td][td]称为逻辑非运算符。用来逆转操作数的逻辑状态,如果条件为 true 则逻辑非运算符将使其为 false。[/td][td] !(A && B) 为 true。[/td][/tr]
[/table]实例
请看下面的实例,了解 C++ 中可用的逻辑运算符。
复制并黏贴下面的 C++ 程序到 test.cpp 文件中,编译并运行程序。

龙听 发表于 2024-11-30 18:58

赋值运算符
下表列出了 C++ 支持的赋值运算符:[table]
[tr][td]运算符[/td][td]描述[/td][td]实例[/td][/tr]
[tr][td]=[/td][td]简单的赋值运算符,把右边操作数的值赋给左边操作数[/td][td] C = A + B 将把 A + B 的值赋给 C[/td][/tr]
[tr][td]+=[/td][td]加且赋值运算符,把右边操作数加上左边操作数的结果赋值给左边操作数[/td][td] C += A 相当于 C = C + A[/td][/tr]
[tr][td]-=[/td][td]减且赋值运算符,把左边操作数减去右边操作数的结果赋值给左边操作数[/td][td] C -= A 相当于 C = C - A[/td][/tr]
[tr][td]*=[/td][td]乘且赋值运算符,把右边操作数乘以左边操作数的结果赋值给左边操作数[/td][td] C *= A 相当于 C = C * A[/td][/tr]
[tr][td]/=[/td][td]除且赋值运算符,把左边操作数除以右边操作数的结果赋值给左边操作数[/td][td] C /= A 相当于 C = C / A[/td][/tr]
[tr][td]%=[/td][td]求模且赋值运算符,求两个操作数的模赋值给左边操作数[/td][td] C %= A 相当于 C = C % A[/td][/tr]
[tr][td]<<=[/td][td]左移且赋值运算符[/td][td] C <<= 2 等同于  C = C << 2[/td][/tr]
[tr][td]>>=[/td][td]右移且赋值运算符[/td][td] C >>= 2 等同于  C = C >> 2[/td][/tr]
[tr][td]&=[/td][td]按位与且赋值运算符[/td][td] C &= 2 等同于  C = C & 2[/td][/tr]
[tr][td]^=[/td][td]按位异或且赋值运算符[/td][td] C ^= 2 等同于  C = C ^ 2[/td][/tr]
[tr][td]|=[/td][td]按位或且赋值运算符[/td][td] C |= 2 等同于  C = C | 2[/td][/tr]
[/table]实例
请看下面的实例,了解 C++ 中可用的赋值运算符。
复制并黏贴下面的 C++ 程序到 test.cpp 文件中,编译并运行程序。

龙听 发表于 2024-11-30 18:59

[code]#include <iostream>
using namespace std;

int main()
{
   int a = 21;
   int c ;

   c =  a;
   cout << "Line 1 - =  运算符实例,c 的值 = : " <<c<< endl ;

   c +=  a;
   cout << "Line 2 - += 运算符实例,c 的值 = : " <<c<< endl ;

   c -=  a;
   cout << "Line 3 - -= 运算符实例,c 的值 = : " <<c<< endl ;

   c *=  a;
   cout << "Line 4 - *= 运算符实例,c 的值 = : " <<c<< endl ;

   c /=  a;
   cout << "Line 5 - /= 运算符实例,c 的值 = : " <<c<< endl ;

   c  = 200;
   c %=  a;
   cout << "Line 6 - %= 运算符实例,c 的值 = : " <<c<< endl ;

   c <<=  2;
   cout << "Line 7 - <<= 运算符实例,c 的值 = : " <<c<< endl ;

   c >>=  2;
   cout << "Line 8 - >>= 运算符实例,c 的值 = : " <<c<< endl ;

   c &=  2;
   cout << "Line 9 - &= 运算符实例,c 的值 = : " <<c<< endl ;

   c ^=  2;
   cout << "Line 10 - ^= 运算符实例,c 的值 = : " <<c<< endl ;

   c |=  2;
   cout << "Line 11 - |= 运算符实例,c 的值 = : " <<c<< endl ;

   return 0;
}[/code]

龙听 发表于 2024-11-30 18:59

C++ 中的运算符优先级
运算符的优先级确定表达式中项的组合。这会影响到一个表达式如何计算。某些运算符比其他运算符有更高的优先级,例如,乘除运算符具有比加减运算符更高的优先级。
例如 x = 7 + 3 * 2,在这里,x 被赋值为 13,而不是 20,因为运算符 * 具有比 + 更高的优先级,所以首先计算乘法 3*2,然后再加上 7。
下表将按运算符优先级从高到低列出各个运算符,具有较高优先级的运算符出现在表格的上面,具有较低优先级的运算符出现在表格的下面。在表达式中,较高优先级的运算符会优先被计算。[table]
[tr] [td]类别 [/td] [td]运算符 [/td][td]结合性 [/td] [/tr]
[tr] [td]后缀 [/td][td]() [] -> .  ++   - -  [/td] [td]从左到右 [/td] [/tr]
[tr] [td]一元 [/td] [td]+  -   !  ~  ++  - -   (type)*  &  sizeof [/td] [td]从右到左 [/td][/tr]
[tr] [td]乘除 [/td] [td]*  /  % [/td][td]从左到右 [/td] [/tr]
[tr] [td]加减 [/td][td]+  - [/td] [td]从左到右 [/td] [/tr]
[tr] [td]移位 [/td] [td]<< >> [/td] [td]从左到右 [/td] [/tr]
[tr] [td]关系 [/td][td]< <=  > >= [/td] [td]从左到右 [/td] [/tr]
[tr] [td]相等 [/td] [td]==  != [/td] [td]从左到右 [/td] [/tr]
[tr] [td]位与 AND [/td][td]& [/td] [td]从左到右 [/td] [/tr]
[tr] [td]位异或 XOR [/td] [td]^ [/td] [td]从左到右 [/td][/tr]
[tr] [td]位或 OR [/td] [td]| [/td] [td]从左到右 [/td][/tr]
[tr] [td]逻辑与 AND [/td][td]&& [/td] [td]从左到右 [/td][/tr]
[tr][td]逻辑或 OR [/td] [td]|| [/td] [td]从左到右 [/td][/tr]
[tr] [td]条件 [/td][td]?: [/td] [td]从右到左 [/td] [/tr]
[tr][td]赋值 [/td] [td]=  +=  -=  *=  /=  %=>>=  <<=  &=  ^=   |= [/td][td]从右到左 [/td][/tr]
[tr] [td]逗号 [/td] [td], [/td] [td]从左到右 [/td][/tr]
[/table]实例
请看下面的实例,了解 C++ 中运算符的优先级。
复制并黏贴下面的 C++ 程序到 test.cpp 文件中,编译并运行程序。
对比有括号和没有括号时的区别,这将产生不同的结果。因为 ()、 /、 * 和 + 有不同的优先级,高优先级的操作符将优先计算。

龙听 发表于 2024-11-30 19:00

[code]#include <iostream>
using namespace std;

int main()
{
   int a = 20;
   int b = 10;
   int c = 15;
   int d = 5;
   int e;

   e = (a + b) * c / d;      // ( 30 * 15 ) / 5
   cout << "(a + b) * c / d 的值是 " << e << endl ;

   e = ((a + b) * c) / d;    // (30 * 15 ) / 5
   cout << "((a + b) * c) / d 的值是 " << e << endl ;

   e = (a + b) * (c / d);   // (30) * (15/5)
   cout << "(a + b) * (c / d) 的值是 " << e << endl ;

   e = a + (b * c) / d;     //  20 + (150/5)
   cout << "a + (b * c) / d 的值是 " << e << endl ;
  
   return 0;
}[/code]

页: [1]