
单片机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 展开
{
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 展开
1个回答
展开全部
我先指出你一个严重的错误:
“ ^ "这个符号,在VB里面,表示的是次方符号,2 ^ 5表示2的5次方,而在C语言里,这个不表示次方符号,表示的是 “ 按位异或”操作。
这是你错误的根本所在。
“ ^ "这个符号,在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;
}
自己写,好处是我都定义成了整形的变量,而原函数是浮点型的,运算过程中,占用的资源比较大。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询