moonlqer 2013-08-07 03:45 采纳率: 0%
浏览 2765

char类型的两个数经过异或运算之后数据类型怎么变成int类型了?

#include
int main(void)
{
char a = 0xa2;
char b = 0x32;
char test = a ^ b;
printf("%#x", test);

 return 0;

}

我期望的打印结果是:0x90
结果打印的是:0xffffff90 好像数据变成int类型了,这个是怎么回事?

  • 写回答

2条回答 默认 最新

  • shen_wei 2015-10-14 03:39
    关注

    c
    int or wint_t
    When used with printf functions, specifies a single-byte character; when used with wprintf functions, specifies a wide character.

    C
    int or wint_t
    When used with printf functions, specifies a wide character; when used with wprintf functions, specifies a single-byte character.

    d
    int
    Signed decimal integer.

    i
    int
    Signed decimal integer.

    o
    int
    Unsigned octal integer.

    u
    int
    Unsigned decimal integer.

    x
    int
    Unsigned hexadecimal integer, using "abcdef."

    X
    int
    Unsigned hexadecimal integer, using "ABCDEF."

    e
    double
    Signed value having the form [ – ]d.dddd e [sign]dd[d] where d is a single decimal digit, dddd is one or more decimal digits, dd[d] is two or three decimal digits depending on the output format and size of the exponent, and sign is + or –.

    E
    double
    Identical to the e format except that E rather than e introduces the exponent.

    f
    double
    Signed value having the form [ – ]dddd.dddd, where dddd is one or more decimal digits. The number of digits before the decimal point depends on the magnitude of the number, and the number of digits after the decimal point depends on the requested precision.

    g
    double
    Signed value printed in f or e format, whichever is more compact for the given value and precision. The e format is used only when the exponent of the value is less than –4 or greater than or equal to the precision argument. Trailing zeros are truncated, and the decimal point appears only if one or more digits follow it.

    G
    double
    Identical to the g format, except that E, rather than e, introduces the exponent (where appropriate).

    a
    double
    Signed hexadecimal double precision floating point value having the form [−]0xh.hhhh p±dd, where h.hhhh are the hex digits (using lower case letters) of the mantissa, and dd are one or more digits for the exponent. The precision specifies the number of digits after the point.

    A
    double
    Signed hexadecimal double precision floating point value having the form [−]0Xh.hhhh P±dd, where h.hhhh are the hex digits (using capital letters) of the mantissa, and dd are one or more digits for the exponent. The precision specifies the number of digits after the point.

    n
    Pointer to integer
    Number of characters successfully written so far to the stream or buffer; this value is stored in the integer whose address is given as the argument. See Security Note below.

    p
    Pointer to void
    Prints the argument as an address in hexadecimal digits.

    s
    String
    When used with printf functions, specifies a single-byte–character string; when used with wprintf functions, specifies a wide-character string. Characters are printed up to the first null character or until the precision value is reached.

    S
    String
    When used with printf functions, specifies a wide-character string; when used with wprintf functions, specifies a single-byte–character string. Characters are printed up to the first null character or until the precision value is reached.

    评论

报告相同问题?

悬赏问题

  • ¥50 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?