单片机C语言,Keil问题

voidmain(){unsignedcharLed[8]={1,1,1,1,0,1,1,1}intoutput=0;inti_a;for(i_a=0;i_a<=7;i_... void main()
{
unsigned char Led[8]={1,1,1,1,0,1,1,1}
int output=0;
int i_a;
for (i_a=0;i_a<=7;i_a++)
{
output=output+Led[i_a]*(2^(7-i_a));
}

}

怎么结果output不等于247啊,我用VB算答案就是247

Private Sub Form_Load()
Dim Led
Led = Array(1, 1, 1, 1, 0, 1, 1, 1)
output = 0
For i = 0 To 7
output = output + Led(i) * (2 ^ (7 - i))
Next i
MsgBox output
End Sub
展开
 我来答
wolf_lhy
2013-06-16 · TA获得超过6609个赞
知道大有可为答主
回答量:1090
采纳率:66%
帮助的人:584万
展开全部
我先指出你一个严重的错误:
“ ^ "这个符号,在VB里面,表示的是次方符号,2 ^ 5表示2的5次方,而在C语言里,这个不表示次方符号,表示的是 “ 按位异或”操作。
这是你错误的根本所在。
追问
啥- -。。。。那次方是什么。。。,我刚学C,习惯了VB了,还以为C也是这样
追答
C语言里没有次方专用的运算符号,你可以自己写一个函数来做次方运算,也可以调用系统函数pow(float x,float y).
如果你要调用系统函数,那么,记得要包含 math.h头文件。
建议你自己写比较好。
比如:

unsigned long power(unsigned long x,unsigned char y)
{
unsigned long mul = 1;

unsigned char i;
for( i = 0;i<y;i++)
{
mul = mul * x;

}

return mul;
}

自己写,好处是我都定义成了整形的变量,而原函数是浮点型的,运算过程中,占用的资源比较大。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式