c语言变量转化成立即数问题请教
例如我要用switchcase语句int i=2;
switch(t)
{
case 1: ----->编译没有错误,因为这个是立即数
f1();
break;
case i: ------>编译错误,因为i是变量,本意是t=2,就执行case下面程序f2(),但是因为i是变量,无法比较,那怎么把这个变量i转化成常量数据2呢?
f2();
break;
}
坐等高手帮忙解决! 自己顶一下 搞得这么不和谐干嘛,改用if-else if-else结构 C语言里面没有立即数这个说法 daFish 发表于 2012-8-31 23:56 static/image/common/back.gif
搞得这么不和谐干嘛,改用if-else if-else结构
搞成if-else当然可以了,如果有我所想要的方式的话 那更好了
LZ连swtich的语法都没看清楚,case后只能是常量,立即数的概念是汇编中的 marshallemon 发表于 2012-9-1 00:05 static/image/common/back.gif
LZ连swtich的语法都没看清楚,case后只能是常量,立即数的概念是汇编中的
我知道我这个case后面必须是常量,我只是举例说明 用变量 i ,我的意思是本来i=2, 通过一个操作,把这变量i 转化成常量 2 转毛,建议lZ好好看看书,变量和常量的存储位置都是不同的,你准备怎么转?
如果你的I值是每个程序都不同,但在一个程序中固定时,应该使用常量定义,把常量定义成一个符号,CASE后跟这个符号就好 看了半天,没看懂楼主要表达什么. {:sweat:} 放弃吧,没解的。 这里我猜测实现上使用了查表跳转的方式,因此搞成变量是没有可能了。 when t=i=1, what do you want the computer to do? 水平太低~~看不懂lz高深的问题 编译器只看数据类型的,才不去管数据的内容是多少。
就跟厕所一样只关注是男是女,不关注三围是多少。 楼主只能switch(i),switch(t); lz没有任何硬件的概念
没有任何编译器的概念
case语句在翻译成汇编时肯定是用了跳转语句
跳转的位置显然是必须固定的
如果你以一个变量为跳转位置
你叫编译器何所适从 呵呵,弄明白就不纠结了 没解,你也别坐等高人了。你自己创造一个解,然后申请诺奖去。 个人认为楼主还是要加强一下C语言和关于数据存储那块的内容. xizi 发表于 2012-9-1 12:30 static/image/common/back.gif
没解,你也别坐等高人了。你自己创造一个解,然后申请诺奖去。
这位兄弟你的积分是负数怎么做到的啊?????????????????? 楼主要的功能在c语言应该没法实现,但是某些编译器case可以指定范围。 1代表什麼? 2又代表什麼?
老外都用英文取代數值,這樣比較好理解程序.
所以你用中文試試看喔{:lol:} zhonggp 发表于 2012-9-1 13:19 static/image/common/back.gif
这位兄弟你的积分是负数怎么做到的啊??????????????????
很容易做到,只要你能获得站长奖赏就可以。 int i=2;
switch(t)
{
case 1: ----->编译没有错误,因为这个是立即数
f1();
break;
default:
if(t == i)
{
f2();
}
break;
} ziruo2002ab 发表于 2012-9-1 11:52 static/image/common/back.gif
lz没有任何硬件的概念
没有任何编译器的概念
case语句在翻译成汇编时肯定是用了跳转语句
感觉你的理解也有问题的 立即数?那不是汇编中的玩意么?LZ你想干嘛?
建议LZ看看switch语句的汇编就明白了。
说明LZ的汇编还是有一定功底的.
页:
[1]