因爲我很困惑它將存儲在它裏面。它是ascii值或'z',因爲一些網站說它存儲ascii和一些說它的商店'z'。 鏈接說,答案是「Z」:http://cprogrammingworld4u.blogspot.in/2011/07/chapter-1-getting-started.html什麼char ch ='Z'會存儲在ch?
鏈接說答案是ASCII:https://www.careercup.com/question?id=12511679
因爲我很困惑它將存儲在它裏面。它是ascii值或'z',因爲一些網站說它存儲ascii和一些說它的商店'z'。 鏈接說,答案是「Z」:http://cprogrammingworld4u.blogspot.in/2011/07/chapter-1-getting-started.html什麼char ch ='Z'會存儲在ch?
鏈接說答案是ASCII:https://www.careercup.com/question?id=12511679
在C,'z'
是int
型與價值122
一個常數(假設你是一個ASCII的機器,其上你可能是)。你們兩位的消息都是一致的 - 他們是一樣的。
作爲一個例子,只需要打印所有你關心的不同方式。示例程序:
#include <stdio.h>
int main(void)
{
char ch = 'z';
char i = 122;
printf("%c %d\n", ch, ch);
printf("%c %d\n", i, i);
return 0;
}
運行:
$ make example && ./example
z 122
z 122
是否改變爲** java **是否與c相同 –
它是[類似於Java](http://stackoverflow.com/questions/13849986/character-literal-in-java),是的。 –
所以你說的答案是ascii和'z'或者什麼 –
答案是...一舉兩得!這裏是一個片段,它可以幫助你更好地理解:
#include <stdio.h>
int main(void) {
char ch = 'z';
printf("%c\n", ch);
printf("%d\n", (int)ch);
}
當你考慮CH爲一個char,這的確是「Z」,存儲。但是,如果將其轉換爲int,則將獲得'z'的ASCII值,即122。
希望這會對您有所幫助。
對'int'的強制轉換是多餘的:'printf'是一個可變參數函數,這意味着'char'在傳遞時自動提升爲'int'。 –
這個答案是正確的,但有點誤導。 '(int)'強制轉換不是必需的,因爲默認的參數促銷並沒有發生任何實際的「轉換」。 –
但在內存中,它只改變存儲'z'或其ascii值..explicity我們改變 –
它「通常」存儲ASCII值。
因此可以對字符執行整數運算。 ASCII值用於將其映射到正確的ASCII字符。你甚至可以增加或減少它。
#include <stdio.h>
int main(void)
{
char ch = 90;
printf("%c\n\n", ch);
ch = 64;
for (int i = 0; i < 26; i++)
{
ch++;
printf("%c\n", ch);
}
}
for循環打印出A-Z.注意我在每次迭代中只增加了1的值。
如果您發現我已經分配了一個數字。我甚至可以把它分配給'z'。
從完整的初學者角度來看,你必須明白的是,所有內容都被存儲爲'0'或'1'。這個不可讀的0和1的序列轉換成您在屏幕上看到的文本(解碼)。
要非常迂腐,它將該字符的值存儲在執行指令集中,該指令集通常是ASCII,但不是*有*。例如,您的程序將在EBCDIC機器上打印一些廢話。 –
@CarlNorum我會進行必要的更正:) –
'Z'
我們是一個字符常量。它的類型是int
。當您使用
char c = 'Z';
存儲在c
整數值可以根據你的編譯器使用的字符編碼是不同的。如果它使用ASCII編碼,那麼它將在c
中存儲'Z'
的ASCII表示,即十進制的90
。如果它使用EBCDIC編碼,那麼它會將'Z'
的EBCDIC表示存儲在c
中,即233
十進制。
爲了編寫可移植程序,您必須忽略存儲在c
中的整數值。有些事情你可以依靠這兩個編碼是:
'9' - '0'
等於9
'Z' - 'A'
等於'z' - 'a'
我不知道在使用其他編碼的上述情況並非如此。
2和3 *不*保證。只要看看你鏈接到的EBCDIC圖表。 –
@CarlNorum的確如此。謝謝你讓我知道。 –
您的新#2有保證嗎?我認爲唯一的保證是數字是連續的。 –
在C你真的不z'和z'的'ASCII值之間的區別'。它們都是內存中完全相同的對象的有效文字。 –
這是一回事。 ''z''只是'z'字符值的語法。如果您想知道該值是什麼,只需將其打印爲整數。 –
因此它將ascii值存儲在內存位置 –