簡體   English   中英

我可以通過加法來增加ac#字符的值嗎?

[英]Can I increase a c# character's value by addition?

例如,我要執行以下操作:

char output = 'A' + 1;

得到'B'的輸出

但是,簡單地嘗試上面的操作會導致轉換錯誤。

是的,二進制+運算符未在char定義,因此最終會隱式轉換為int 您可以使用前/后遞增運算符:

char x = 'A';
x++;

...因為++運算符char定義的。

但是否則,您需要強制轉換:

char x = 'A';
x = (char) (x + 1);

您需要自己進行操作,就像這樣

char output = (char)('A' + 1);

正如其他人指出的,是的,這是絕對可能的。 其他答案給出了示例,因此我不再重復。 但是,我想在此警告:如果您只是“盲目地”向角色添加數字,則可能會得到意想不到的結果。 例如,Z + 1 ='['。 如果那是您期望的結果,那就太好了-否則,您必須處理這些。 也有可能添加到char中將導致無法打印的字符(例如〜+ 1 ='DEL',該字符不可打印,並且'DEL'+ 1不再是“標准” ASCII)。

您必須考慮以下情況:Z,z或9加1的結果是什么? 您能否獲得非字母的輸入或輸出-例如{+ 1(結果:“ |”)是否有效? Z + 1 ='['呢? 您在ASCII 127(最后一個有效的ASCII字符)處做什么? 不可打印字符呢?

例如,如果您期望輸入只是字母和數字,並且希望結果在有效范圍的末尾“回繞”(例如Z + 1 = A,z + 1 = a,9 + 1 = 0),您可以執行以下操作:

char bChar = 'A'; // Or whatever you want, obviously
switch (bChar)
        {
            case 'z':
                bChar = 'a';
                break;
            case 'Z':
                bChar = 'A';
                break;
            case '9':
                bChar = '0';
                break;
            default:
                bChar++;
                break;
        }

主要的事情是決定這些“邊緣情況”應該發生什么,並確保您正確地處理它們。

嘗試:

int ASCIINumber = (int)'A'; //101 A
char charResult = Convert.ToChar(ASCIINumber + 1);  //102 or B

暫無
暫無

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

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