【发布时间】:2013-08-29 12:19:07
【问题描述】:
我有一个AVR编程案例
case (0xe7): keyPressed=".";
在此期间我想调用一个预定义的函数
switch (keyCode) //generating key characetr to display on LCD
{
case (0xee): keyPressed="1";
b=1;
a=a*10+b;
i=i++;
break;
case (0xed): keyPressed="4";
b=4;
a=a*10+b;
i=i++;
break;
case (0xeb): keyPressed="7";
b=7;
a=a*10+b;
i=i++;
break;
case (0xde): keyPressed="2";
b=2;
a=a*10+b;
i=i++;
break;
case (0xdd): keyPressed="5";
b=5;
a=a*10+b;
i=i++;
break;
case (0xdb): keyPressed="8";
b=8;
a=a*10+b;
i=i++;
break;
case (0xd7): keyPressed="0";
b=0;
a=a*10+b;
i=i++;
break;
case (0xbe): keyPressed="3";
b=3;
a=a*10+b;
i=i++;
break;
case (0xbd): keyPressed="6";
b=6;
a=a*10+b;
i=i++;
break;
case (0xbb): keyPressed="9";
b=9;
a=a*10+b;
i=i++;
break;
}
我如何制作这个功能?并在我的情况下在主程序中调用它? 请指导我,我对这一切都很陌生... 请帮帮我..
【问题讨论】:
-
不要做
i = i++,它的行为是不确定的。 -
我实际上希望将整数“a”存储为整数,然后将其除以 10^i 以获得十进制形式.. i 表示按键的总次数。 . 请指导我正确的方法?
-
i++;相当于i = i+1;Joachim 是对的 -
另外,在
case标签表达式周围加上括号是没有意义的。只是case 0xe7:等等更干净一些。 -
@ndj,
i++在返回值上与i=i+1不同。i=i++是 UB,而i=i=i+1是(我认为)有效的。
标签: c function calculator avr atmega