C输出问题任何人都可以解释这个输出吗?

时间:2020-04-03 09:52:23

标签: c string printf output ascii

"hits": [
            {
                "_index": "datetimeindexf",
                "_type": "_doc",
                "_id": "1",
                "_score": 1.5753641,
                "_source": {
                    "dateTime": "12:17:08",
                    "orgId": "z2store",
                    "type": "web"
                }
            }
        ]

我期望在那里出现错误,但是程序运行并且输出为16705。有人可以解释一下吗?

3 个答案:

答案 0 :(得分:4)

任何人都可以解释一下吗?

'AA'是一个多字符字符常量。它的类型为int。它的值是实现定义的。

这里的“实现”是编译器,您的编译器具有int'AA'映射到的规则。映射似乎很容易。因为我不知道您的编译器,所以我猜到了。请确保查阅您的编译器文档。

'AA'映射到值'A' << 8 | 'A'。将'A'与另一个'A'移了一个字节。您的系统很可能使用ASCII表示字符。 'A'以ASCII映射到十进制值65(十六进制0x41)。计算0x41 << 8 | 0x41得出16705的十进制值。由于这是一个int值,因此可以使用%d打印结果。因此,您的代码等效于printf("%d\n", 16705)

答案 1 :(得分:0)

'AA'是一种异国情调的野兽。这是一个字符文字,但是ASCII没有单个字符'AA'。这说明了为什么您改为获取非ASCII值。

答案 2 :(得分:-1)

运行此代码是因为char数据类型是数字,并且您已请求打印真数字“ AA”

https://en.wikipedia.org/wiki/C_data_types

相关问题