簡體   English   中英

如何在char數組中放入“ 51”這樣的兩位數char?

[英]How to put double-digit char like '51' in a char array?

#include<stdio.h>


int main(){
char array[3][3]={{'2','1','3'},{'4','5','9'}};
array[0][0]='51';

}

錯誤警告:多字符常數[[Wmultichar] array [0] [0] ='51'; ^ ~~~ 17.4.c:6:17:警告:隱式常量轉換中溢出[-Woverflow]

如果要在一個字符中存儲兩位十進制數字,則實際上可以使用4位半字節來存儲數字

int two_to_one(const char *number)
{
    return *number - '0' + ((*(number + 1) - '0') << 4);
}

char *char one_to_two(int ch, char *buff)
{
    buff[1] = ch >> 4;
    buff[0] = ch & 0xf;
    buff[2] = 0;

    return buff;
}

字符只能包含一個符號。 “ 51”是兩個符號。 如果將其寫在雙括號(“ 51”)之間,則可能是三個,因為C型字符串始終以\\0 要保留多個符號,應使用char指針和雙括號,或使用一維以不同的方式訪問它們:

char* array[3] = {"one", "two", "three"}; 
char string[3][7] = {"one", "two", "three"};

第二行表明可以使用最多包含7個字符(包括\\0 )的3個字符串。 我之所以選擇這樣的數字,是因為“三個”由6個符號組成。

如果要使用多字符常量,則可以將它們存儲在大於char的整數變量中。 例如,這可以工作 -在某種意義上說,它存儲了一個多字符:

int x = '52';

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM