#include <stdio.h>
int main()
{
printf("%d", "123456"[1]);
return 0;
}
//expected output 123456
//original output 50
請解釋輸出?
uj5u.com熱心網友回復:
"123456"[1]給出字符'2'。該字符的 ascii 值為50.
要列印完整號碼,請執行以下操作:printf ("%d", 123456);或printf ("%s", "123456");
uj5u.com熱心網友回復:
您正在嘗試使用列印整數,%d但您提供了一個字串。要獲得預期的輸出,您必須提供一個整數作為 printf 的第二個引數或%s用作格式說明符。
printf ("%d", 123456);要么printf ("%s", "123456");
現在,解釋一下50你得到的輸出:
在這里, "123456" 是 a const char *,因此當您嘗試使用 從特定索引中獲取值時[1],它會獲取1您的索引,const char *即char 2。
索引 -> 0 1 2 3 4 5
輸入 -> 1 2 3 4 5 6
現在,當您使用格式說明符(整數)列印時,它列印了char%d的 ASCII 值,即. 250
uj5u.com熱心網友回復:
如果您需要確切的字串,則不需要格式說明符,您可以簡單地做
printf("123456");
您得到的輸出為 50,因為在 C 中 String 被視為 char 陣列,它也可以根據格式說明符對值進行型別轉換。
所以這里的“123456”變成了一個陣列。1 索引處的 char 是 2。char“2”的整數值,即 2 的 ascii 值是 50。因此輸出。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/426987.html
