表达式是错的呀,buffer[5]的地址强制转换为long以后就不能用*取值了,那家伙脑子有水。

解决方案 »

  1.   

    哇!Searph,你真是高~~~~~~~~手啊!小弟对你的敬仰之情,犹如滔滔江水,连绵不绝……那个错误不看的话还真看不出来呢(旁白:这小子尽说废话,题都不看怎么知道有错),但问题是我看了都没看出来,呵呵……
      

  2.   

    写成这样还差不多:*((long *)&(buffer[5]))
      

  3.   

    嘿嘿嘿嘿~~(星爷的笑~~)
    是不是写错了?如果是*((long*)&(buffer[5]))倒是正确的,这样结果应该是0x08070605
      

  4.   

    那个东西确实是错的,而且想改正也有好几种方法
    ((long)&(buffer[5]))的值是buffer地址+5
    char cTest=*((char *)((long)&(buffer[5])))的值是5
    long lTest=*((long *)((long)&(buffer[5])))的值是0x08070605
      

  5.   

    嘿嘿……写复杂了,多写了几个long
    我们应该问问斑竹,在这里聊天不违法吧?
      

  6.   

    To: heartlove 你可以试着去编译一下
      

  7.   

    可能是我记错了
    应该是*((long*)&(buffer[5]))各位大虾,告诉我解法好吗?谢谢
      

  8.   

    这种做法本身就是有问题的!
    在Sun Sparc上,将字符指针强制成long使用,可能引起程序崩溃。
    而且,在不同的CPU上,字节顺序也是不一样的。intel与Sun Sparc正好相反。
    这样导致同一程序在不同平台上结果不一样。
      

  9.   

    盗版vc6.0,正版win98第二版,清醒而喝完咖啡的vcbear
    F7编译:char buffer[]={0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9};
    long V=0;//vcbear定义的
        V=(long)*((long)&(buffer[5]));//第一个long是vcbear忍无可忍时添加的
    结果:
    C:Vc\MySamples\MySamplesDlg.cpp(188) : error C2100: illegal indirection
    Error executing cl.exe.
    脑子有水....
      

  10.   

    Compiler Error C2100
    illegal indirectionThe indirection operator (*) was applied to a nonpointer value.
      

  11.   

    如果是*((long*)&(buffer[5]))那就是 0x08070605 很简单,四个字节的long,高位在后.