电子开发 | 基础入门 | 电路原理图 | 濮婎垰鑸伴崶鎯х杽娓氾拷 | PLC閸╄櫣顢�   閵嗗﹤顩ч弸婊冩灘濞嗐垺婀扮粩娆欑礉鐠囬攱瀵� Ctrl+D 閹靛濮╅弨鎯版閿涗焦鍔呯拫銏″亶閻ㄥ嫭鏁幐浣碘偓锟�娑撯偓鐠у嘲顒熸稊鐘辩鐠х柉绻樺銉礉閻㈤潧鐡欏鈧崣鎴犲竾濞嗐垼绻嬮幃顭掔磼.

电子开发网

电子开发网电子设计 | 电子开发网Rss 2.0 会员中心 会员注册

閳藉懐鏁哥捄顖氬彆瀵繑澧滈崘宀嬬礉閺堚偓閺傛壆澧楅妴濠勬暩鐎涙劗鏁哥捄顖氬彆瀵繗顓哥粻妤€娅掗妴瀣剁礉閻絻鐭鹃崗顒€绱¢弻銉嚄閹靛鍞� 閻絻鐭鹃崗顒€绱$拋锛勭暬閸c劊鈧劗鏁哥€涙劒绮犳稉姘眽閸涙ê绻€婢跺洦澧滈崘灞烩偓锟�
閳藉棗宕勬径鈺侇劅娴兼艾宕熼悧鍥ㄦ簚鐎圭偘绶�100 c鐠囶叀鈻� chm閺嶇厧绱¢妴鍌濈カ閺傛瑥鍞寸€圭顕涚紒鍡礉鐟曞棛娲婃笟瀣摍婢舵熬绱濋崘鍛啇楠炶¥鈧劗鏁哥€涙劒绮犳稉姘眽閸涙ê绻€婢跺洦澧滈崘灞烩偓锟�
搜索: 您现在的位置: 电子开发网 >> 基础入门 >> Arduino开发学习 >> 正文

Arduino-运算符-系列4

作者:佚名    文章来源:网络    点击数:974    更新时间:2023/11/26

前面我们陆续介绍了Arduino的程序结构、数据类型、常量和变量,本章介绍Arduino的运算符,运算符是一个特定的符号,它告诉计算机执行特定的数学或逻辑运算。在C语言中内置了丰富的运算符,包含以下类型:

  1. 算术运算符
  2. 关系运算符
  3. 逻辑运算符
  4. 位运算符
  5. 混合运算符
microcomputer 

算术运算符

算术运算符也就是常见的加减乘除、赋值运算和模数运算,详细了解一下,我们先假设变量A的值是10,变量B的值是20:

  1. 赋值运算符:“ = ”,表示将等号右边的值存储在等号左边的变量中。如:A=B。这里注意不能理解为等于符号。
  2. 加法运算符:“ + ”,表示两个操作数相加。如:A+B,将会得到30。
  3. 减法运算符:“ – ”,表示两个操作数相减。如:A-B,将会得到-10。
  4. 乘法运算符:“ * ”,表示两个操作数相乘。如:A*B,将会得到200。
  5. 除法运算符:“ / ”,表示两个操作数相除。如:B/A,将会得到2。
  6. 模数运算符:“ % ”,表示求整数除法中的余数。如:B%A,将得到0。

再看一个实际例子:

1
2
3
4
5
6
7
8
void loop () {
int a = 9,b = 4,c;
c = a + b;
c = a - b;
c = a * b;
c = a / b;
c = a % b;
}
1
2
3
4
5
6
/*代码将输出:*/
a + b = 13
a - b = 5
a * b = 36
a / b = 2 //不计余数,取整数商;
a % b = 1 //余数是1;

关系运算符

关系运算符在C语言中主要起判断的作用。同样的,我们先假设变量A的值是10,变量B的值是20:

  1. 等于:“ == ” ,判断两个操作数的值是否相等,如果是,则条件为真。如:A == B,结果不为真,会返回 false;
  2. 不等于:“ != ”,判断两个操作数的值是否相等,如果值不相等,则条件为真。如:A != B,结果为真,会返回 true;
  3. 小于:“ < ”,判断符号左边操作数的值是否小于右边操作数的值,如果是,则条件为真。如A < B,结果为真,会返回 true;
  4. 大于:“ > ”,判断符号左边操作数的值是否大于右边操作数的值,如果是,则条件为真。如A > B,结果不为真,会返回 false;
  5. 小于等于 :“ <= ”,判断符号左边操作数的值是否小于或等于右边操作数的值,如果是,则条件为真。如A <= B,结果为真,会返回 true;
  6. 大于等于:“ >= ”, 判断符号左边操作数的值是否大于或等于右边操作数的值,如果是,则条件为真。 如A >= B,结果不为真,会返回 false;

看实际例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
void loop () {
int a = 9,b = 4
bool c = false;
if(a == b)
c = true;
else
c = false;
if(a != b)
c = true;
else
c = false;
if(a < b)
c = true;
else
c = false;
if(a > b)
c = true;
else
c = false;
if(a <= b)
c = true;
else
c = false;
if(a >= b)
c = true;
else
c = false;
}

输出结果如下:

1
2
3
4
5
6
c = false
c = true
c = false
c = true
c = false
c = false

逻辑运算符

同样的,我们先通过假设变量A的值是10,变量B的值是20:

  1. 逻辑与‘and’:“ && ”,如果两个操作数都非零,则条件为真。如:A && B,结果为真;
  2. 逻辑或‘or’:“ || ”,如果两个操作数中有一个非零,则条件为真。如:A || B,结果也为真;
  3. 逻辑非‘not’:“ ! ”,用于反转操作数的逻辑状态。如操作数的逻辑状态条件为真,则逻辑非的结果为假。如:!(A&&B),因为A && B,结果为真,则逻辑非结果为假。

看一下实际例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void loop () {
int a = 9,b = 4
bool c = false;
if((a > b)&& (b < a))
c = true;
else
c = false;
if((a == b)|| (b < a))
c = true;
else
c = false;
if( !(a == b)&& (b < a))
c = true;
else
c = false;
}

输出:

1
2
3
c = true
c = true
c = true

位运算符

Arduino中的位运算符包括:按位与(&)、按位或(|)、按位异或(^)、取反(~),它们的运算对象都必须为整数,而且除了取反运算符,其余三种均为双目运算符(见文末注解)。当然Arduino中还包括左移运算符(<<)和右移运算符(>> )。老惯例,假设变量A的值是60(二进制0011 1100),变量B的值是13(二进制0000 1101):

  1. 按位与(&):让参与运算的两个数相对应的二进制位相与。规则:只有对应的两个二进制位都为1时,结果位才为1;只要有一个二进制位为0,结果位就为0。如A&B,A对应二进制为 0011 1100 ;B对应二进制为 0000 1101 ,结果为12,对应二进制运算结果为 0000 1100。
  2. 按位或(|):让参与运算的两个数相对应的的二进制位相或。规则:只有对应的两个二进制位都为0时,结果位才为0;只要有一个二进制位为1,结果位就为1。如:A|B,结果对应的二进制位为 0011 1101,结果为61;
  3. 按位异或(^):让参与运算的两个数相对应的的二进制位相异或。规则:当对应的两个二进制位相同(都为1或都为0)时,结果位为0;当对应的两个二进制位相异时,结果位为1。如A^B,结果对应的二进制位为00110001,结果为49;
  4. 取反(~):用于求整数的二进制反码。规则:二进制位为1的取反后变为0,二进制位为0的取反后变为1。如:~A,结果二进制为1100 0011;
  5. 左移运算符(<<):规则:左操作数值由右操作数指定的位数向左移动,左边“抛弃”,右边补0。如:(A << 2)结果为 240, 二进制为 1111 0000;
  6. 右移运算符(>> ):左操作数值按右操作数指定的位数右移,左边用0填充,右边丢弃。如:(A >> 2) 结果为 15, 二进制为 0000 1111。

看一些实际例子:

1
2
3
4
5
6
7
8
9
10
void loop () {
int a = 60,b = 13
int c = 0;
c = a & b ;
c = a | b ;
c = a ^ b ;
c = a ~ b ;
c = a << b ;
c = a >> b ;
}

输出:

1
2
3
4
5
6
c = 12
c = 61
c = 49
c = -60
c = 240
c = 15

混合运算符

我们还是以实际例子来帮助理解,假设变量A的值是10,变量B的值是20:

  1. “++”:增量运算符,将整数值增加1。如:A++,结果为11;
  2. “–”: 递减运算符,使整数值减少1 。如:A–,结果为9;
  3. “+=”:将右操作数添加到左操作数并将结果分配给左操作数。如:B += A,等价于B = B+ A;
  4. “-=”:将左操作数减去右操作数并将结果赋给左操作数。如:B -= A等价于B = B – A;
  5. “*=”:将右操作数与左操作数相乘,并将结果赋给左操作数。如:B*= A等价于B = B*A;
  6. “/=”:将左操作数与右操作数分开,并将结果分配给左操作数。如:B /= A等价于B = B / A;
  7. “%=”:对两个操作数取模,并将结果赋给左操作数。如:B %= A等价于B = B % A。

看实际例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
void loop () {
int a = 10,b = 20
int c = 0;
a++;
a--;
b += a;
b -= a;
b *= a;
b /= a;
a %= b;
a |= b;
a &= b;
}

输出为:

1
2
3
4
5
6
7
8
9
a = 11
a = 9
b = 30
b = 10
b = 200
b = 2
a = 0
a = 0
a = 30

注解

单目运算符:只对一个变量进行操作。如:a++;
双目运算符:对两个变量进行操作。如:a=1; b=3; c=a+b;就是双目运算符;
多目运算符:对三个变量进行操作。如:int a = boolean ? b : c; 。

Tags:Arduino,运算符,程序  
责任编辑:admin
请文明参与讨论,禁止漫骂攻击,不要恶意评论、违禁词语。 昵称:
1分 2分 3分 4分 5分

还可以输入 200 个字
[ 查看全部 ] 网友评论
    没有任何评论
最新推荐
鐢靛瓙寮€鍙戠綉锛氭眹闆嗙患鍚堝悇绫荤數瀛愬埗浣滀笌鐢佃矾鍥剧殑缃戠珯锛宲lc宸ユ帶鎶€鏈�,妯$數鏁扮數鐭ヨ瘑,鍗曠墖鏈篍DA绛夌瓑锛佽崯钀冪數璺浘缃戠珯绮惧崕锛屼负宸ョ▼甯堝垱閫犱环鍊笺€傛杩庡叧娉ㄥ井淇″叕浼楀彿锛氱數瀛愬紑鍙戠綉锛�
璧勬枡鍖呬笅杞�
 [闂備礁鎲¢〃鍡椕哄⿰鍕珷闁哄稁鍘肩€氬螖閿曚焦纭堕柕鍫亰閺岋繝宕掗敂钘夘伓]闂備礁鎲¢妵鐐电矆娓氣偓婵″灚寰勭仦绋夸壕婵炴垵纾槐鎵磼閸欐ê宓嗙€规洩绻濆鎾偐瀹割喗姣堥梻浣告惈閻楀棝骞栭锔藉仾闁告洦鍓涢悷褰掓煥閻曞倹瀚�100 c闂佽崵濮村ù鍕箯閿燂拷
 [闂佸搫顦遍崕鎰板垂椤栨埃鏋庨柕蹇嬪灮鐏忕敻鏌ㄩ悤鍌涘]濠电偞鍨堕幐鎼佀囩€圭姰浜圭紒鈧悜鐫犻梺璇插閸愯崵绱撳鍗炲К闁告洦鍓涢々鐑芥偣閹帒濡介柛鈺佸€垮鍫曟倻閸℃浠у┑鐐叉-閺侇煝-TR
 [闂備焦妞垮鈧紒鎻掝煼閹矂鎮欓鍌ゆ祫闁荤姵浜介崝宥夊春閸岀偞鍋eù锝囨嚀缁€鍐┿亜閹垮嫭瀚�]LM324闂佸搫顦弲婊堝礉閺嶎厼妫橀柨鐕傛嫹4~20mA闂佸搫顦遍崕鎴﹀箯閿燂拷1~5V闂備焦鐪归崹褰掓倶濮樿京鐭堥柨鐕傛嫹
 [闂備焦妞垮鈧紒鎻掝煼閹矂鎮欓鍌ゆ祫闁荤姵浜介崝宥夊春閸岀偞鍋eù锝囨嚀缁€鍐┿亜閹垮嫭瀚�]LM386濠碉紕鍋涘﹢杈╁垝椤栫偞鍊垫い鎺嶇劍婵挳鏌熼幑鎰靛殭妞ゆ柨锕弻娑滅疀閹垮啫鍓跺銈冨劜閹瑰洤顕i妸鈺佺畾鐟滃绂嶉敐澶嬬厱闁挎繂鍟俊濂告偨椤栥倖瀚�
 [闂備焦妞垮鈧紒鎻掝煼閹矂鎮欓鍌ゆ祫闁荤姵浜介崝宥夊春閸岀偞鍋eù锝囨嚀缁€鍐┿亜閹垮嫭瀚�]936闂備胶绮敮鎺楁晝閵堝牄浜归柟缁㈠枟閸嬨劌霉閿濆懎鏆熼柣鏂挎嚇閺屾稑螣閻撳孩鐏侀梺璇″枛閿曨亜鐣烽崼鏇熸櫢闁跨噦鎷�
 [闂備礁鎲¢〃鍡椕哄⿰鍕珷闁哄稁鍘肩€氬螖閿曚焦纭堕柕鍫亰閺岋繝宕掗敂钘夘伓]闂佺儵鍓濈敮鎺楀箠鎼淬劍鏅柟閭﹀厴閺嬫牠鏌曡箛銉х?闁靛牊鎸抽幃褰掓偖鐎涙ê顏�+婵犵數鍋為幐鎾疾濞戞埃鍋撻惂鍛婂+闂備胶顢婄紙浼村磿閹绢噮鏁嗛柣鏂垮悑閸庡秹鏌涢弴銊ヤ簻缂佲偓閿燂拷
 [闂傚倷绶¢崑鍛潩閵娾晛鏋侀柕鍫濐槹閸嬨劑姊婚崼鐔恒€掗柟钘夌Ч閹鎷呴悷鎵槰濡炪倖鎸搁幉鈥翅缚椤忓牜鏁嶆繛鍡樺姦閸嬶拷]S7-200PLC闂備焦鐪归崝宀€鈧凹浜為幐鎺楀閵堝棗鍓抽梺缁樻⒐濡叉帡骞忛鈷氬綊鎮崨顔碱伓 S7_2
 [闂佸搫顦遍崕鎰板垂椤栨埃鏋庨柕蹇嬪灮鐏忕敻鏌ㄩ悤鍌涘]S7-200闂佸湱鍘ч悺銊╁箰婵犳艾鍑犻柛鎰ㄦ櫇椤╃兘鎮规担鍛婅础缂佲偓閸曨垱鐓曢煫鍥风悼閸樻粎绱掗幉瀣,STEP7
 [闂佸搫顦遍崕鎰板垂椤栨埃鏋庨柕蹇嬪灮鐏忕敻鏌ㄩ悤鍌涘]ModbusPoll闂備礁鎲$划宀勵敆閻栧獛busSalve闂備胶枪妤犲繘骞忛敓锟�
 [闂佸搫顦遍崕鎰板垂椤栨埃鏋庨柕蹇嬪灮鐏忕敻鏌ㄩ悤鍌涘]STEP7婵犵妲呴崹顏堝礈濠靛牃鍋撳顓犳噰闁哄苯鐭佺粻娑㈠棘鐠恒劍鈻屽┑鐐差嚟婵即宕愰弴鐘哄С闁跨噦鎷� Smart_
 [闂佸搫顦遍崕鎰板垂椤栨埃鏋庨柕蹇嬪灮鐏忕敻鏌ㄩ悤鍌涘]Modbus闂佽崵濮撮鍛村疮閹惰姤鍎婃い鏍ㄧ矊閸ㄦ繈鏌涢幘妤€鍊荤憴锟� v1.024 缂傚倸鍊风欢銈夊箯閿燂拷
 [闂佸搫顦遍崕鎰板垂椤栨埃鏋庨柕蹇嬪灮鐏忕敻鏌ㄩ悤鍌涘]Modscan32闂備礁鎲$划宀勵敆閻栧獛sim32,modb
 [闂備焦妞垮鈧紒鎻掝煼閹矂鎮欓鍌ゆ祫闁荤姵浜介崝宥夊春閸岀偞鍋eù锝囨嚀缁€鍐┿亜閹垮嫭瀚�]89c51闂備胶枪缁绘劙藝闁秵鍋熸繛鎴欏灩濡﹢姊洪锝囶灱闂傚棗缍婇弻锝夘敂閸℃鐝㈢紓浣介哺閻涱槝otues
 [闂備焦妞垮鈧紒鎻掝煼閹矂鎮欓鍌ゆ祫闁荤姵浜介崝宥夊春閸岀偞鍋eù锝囨嚀缁€鍐┿亜閹垮嫭瀚�]濠电偞鍨堕幐绋棵洪妶澶婄濡わ絽鍟崒銊╂煕閻愭潙袨otues濠电偛顕慨鎯р枖閺囩儑鑰块柨娑樺閻瑩鎮楅敐搴濈敖缁炬澘绉电换婵婎槼闁告梹顨婇幃銉╂晸閿燂拷
 [闂備焦妞垮鈧紒鎻掝煼閹矂鎮欓鍌ゆ祫闁荤姵浜介崝宥夊春閸岀偞鍋eù锝囨嚀缁€鍐┿亜閹垮嫭瀚�]51闂備礁鎲¢〃鍡椕哄⿰鍕珷闁哄稁鍘肩€氬鏌涘┑鍡楊仼闁秆冿功缁辨帞鈧綀鍩栫€氾拷 protues濠电偛顕慨鎯р枖閺囩儑鑰块柨鐕傛嫹
鏈€鏂版枃绔�
关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 在线帮助 - 文章列表
返回顶部
刷新页面
下到页底
晶体管查询