从左至右只是运算符的结合律,而运算符的优先级和结合律只是规定运算对象的组合方式,对求值顺序没有规定。
引用《C++ Primer》上的一个例子来说明:
在一条形如f()+g()*h()+j()的表达式中:
优先级规定,g()的返回值和h()的返回值相乘。
结合律规定,f()的返回值先与g()和h()的乘积相加,所得结果再与j()的返回值相加。
对于这些函数的调用顺序没有明确规定。
回到这个语句cout<<*p<<'\t'<<(*p++)<<endl
由于C++标准没有规定求值顺序,程序可能先求值(*p++),也可能先求值(*p),甚至还可能先执行(*p++),求到一半再执行(*p),最后回过头来完成(*p++)的求值。因此这个语句的结果依赖于编译器如何实现,是未定义的。出现什么结果都不奇怪。
单片机流水灯程序代码(汇编语言):ORG0000HAJMPMAINORG0030HMAIN:MOVP1,#11111110BACALLDELAY跳转到子程序MOVP1,#11111101BACALLDELAYMOVP1,#11111011BACALLDELAYMOVP1,#11110111BACALLDELAYMOVP1,#11101111BACALLDELAYMOVP1,#11011111BACALLDELAYMOVP1,#10111111BACALLDELAYMOVP1,#01111111BACALLDELAYAJMPMAINDELAY:MOVR7,#10延时1s子程序开始DEL1:MOVR6,#200DEL2:MOVR5,#250DJNZR5,$DJNZR6,DEL2DJNZR7,DEL1RETEND1、流水灯是若干个灯泡依次点亮,视觉上感觉到灯光在流动就叫做流水灯。2、它是由无数个LED灯组成的,而LED就是发光二极管的简称,它有个特性:就是它只允许电流单一方向流过。如果让LED灯亮起来,他需要连接一个高电平和一个低电平,当它遇到低电平时它会亮起来而遇到高电平它就会熄灭。由于他只能单方向流过电流,所以也就会一亮一暗。
1灭)。编译器keilC代码如下:
#include
#include
//包含循环左移函数
_cro_l头文件
unsigned
char
tmp
//中间变量
//////////////////////////////////////////////////////////////////////////////////////////////////
//
延时子程序
////////////////////////////////////////////////////////////////////////////////////////////////
void
delay(unsigned
int
cnt)
{
while(--cnt)
}
//////////////////////////////////////////////////////////////////////////////////////////////////
//
主函数
////////////////////////////////////////////////////////////////////////////////////////////////
main()
{
while(1)
//外层循环
{
tmp
=
0xfe
P1
=
tmp
while(1)
//内层循环,执行1、3、5、7亮灯循环
{
delay(30000)
//延时以便能观察到灯亮移动,自己可以调整时间,由晶振和实参决定
tmp
=
_crol_(tmp,2)
P1
=
tmp
if(tmp
==
0xbf)
//判断是否已经点亮到第7灯。是,则退出进入2、4、6、8循环
{
break
}
}
tmp
=
0xfd
P1
=
tmp
while(1)
//内层循环,执行2、4、6、8亮灯循环
{
delay(30000)
//延时以便能观察到灯亮移动,自己可以调整时间,由晶振和实参决定
tmp
=
_crol_(tmp,2)
P1
=
tmp
if(tmp
==
0x7f)
//判断是否已经点亮到第8灯。是,则退出进入1、3、5、7循环
{
break
}
}
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)