#include <iostream.h>void foo();int main()
{
    foo();
    return 0;
}void foo()
{
    int value = 0x5350;    // 晕,这块相等是怎么判断的?
    if ( value == 'SP' )
    {
        cout << (char) value << endl;
        cout << value << endl;        value++;        
    }
}如程序,怎么判断的?

解决方案 »

  1.   

    0x5350 在内存中是0x50 0x53 对应ascii码PS,如果把它看成是2字节的大字符就是SP,
    if ( value == 'SP' )是大字符判断,是可以的。
      

  2.   

    这样理解更准确一点'SP',在内存中就是等于0x5350,所以
    if ( value == 'SP' )就相当于 if(valu==0x5350)
      

  3.   

    'SP'这样可以吗?字符常量不是'x'这样写的吗?‘’内一般只有一个字节。好像字符串常量可以为多字节。
      

  4.   

    'SP'是不可以的,那个if块肯定进不去
      

  5.   

    可以过(偶在VS2003上试了)。这是MSDN上的例子:
    Character constants are specified as one or more characters enclosed in single quotation s. For example:char ch = 'x';          // Specify normal character constant.
    int mbch = 'ab';        // Specify system-dependent
                            //  multicharacter constant.
    wchar_t wcch = L'ab';   // Specify wide-character constant.
    Note that mbch is of type int. If it were declared as type char
    摘自:ms-help://MS.VSCC/MS.MSDNVS.2052/vclang/html/_pluslang_c.2b2b_.character_constants.htm
      

  6.   

    int value='SP';
    编译器理解为:
    int value=0x5350;
    如果是 int value='SPSP';
    则理解为 int value=0x53505350;
    最多4个字符,因为size(int)=4;