>c; std::cout,c++,c,character-encoding,character-properties,C++,C,Character Encoding,Character Properties" /> >c; std::cout,c++,c,character-encoding,character-properties,C++,C,Character Encoding,Character Properties" />

与C+中的字符不一致的算术运算+;? 我只是用一个非常简单的C++程序来玩角色,让我解释一下情况: #include<iostream> int main(){ char c; std :: cin >> c; std :: cout << "The integer value of character entered is : " << int(c) << '\n'; int m = 12 + 'á'; std :: cout << m << '\n'; return 0; } #包括 int main(){ 字符c; 标准:cin>>c; std::cout

与C+中的字符不一致的算术运算+;? 我只是用一个非常简单的C++程序来玩角色,让我解释一下情况: #include<iostream> int main(){ char c; std :: cin >> c; std :: cout << "The integer value of character entered is : " << int(c) << '\n'; int m = 12 + 'á'; std :: cout << m << '\n'; return 0; } #包括 int main(){ 字符c; 标准:cin>>c; std::cout,c++,c,character-encoding,character-properties,C++,C,Character Encoding,Character Properties,我刚才说过160不是á的代码……我错了,它是,在代码页CP437又名DOS中。在Windows(CP1252)代码页中,á是225,但显然Windows在控制台中不使用Windows代码页 您的编辑器可能会也可能不会使用CP437、CP1252、UTF8或其他任何东西。请在十六进制编辑器中查看您的程序,以确定这一点。更好的是,在程序文本中,不要使用纯7位ASCII以外的任何东西,尤其是在Windows上,但通常在其他任何地方都可以。即使在运行同一版本的标准不允许使用相同的操作系统和。它们会来咬你

我刚才说过160不是
á
的代码……我错了,它是,在代码页CP437又名DOS中。在Windows(CP1252)代码页中,
á
是225,但显然Windows在控制台中不使用Windows代码页

您的编辑器可能会也可能不会使用CP437、CP1252、UTF8或其他任何东西。请在十六进制编辑器中查看您的程序,以确定这一点。更好的是,在程序文本中,不要使用纯7位ASCII以外的任何东西,尤其是在Windows上,但通常在其他任何地方都可以。即使在运行同一版本的标准不允许使用相同的操作系统和。它们会来咬你。如果你的程序中需要非ASCII字符串,请从数据文件中读取它们,不要将它们嵌入源代码中


当你在程序中使用文本时,总是要确保使用正确的编码。这并不简单,尤其是在使用Visual Studio和标准C和/或C++ I/O库时在Windows下。我不能使这种组合与UTF-8。

在许多系统中,<代码>胡/代码>用两个字节表示……th
cout@ArneMertz:我得到-31作为值我刚才说过160不是a的代码…我错了,它是,在代码页CP437,又称DOS中的Windows(CP1252)代码页,á是225,但显然Windows在控制台中不使用Windows代码页。您的编辑器可能使用也可能不使用CP437、CP1252、UTF8或其他任何东西。请在十六进制编辑器中查看您的程序,以确定这一点。更好的是,在程序文本中,尤其是在Windows上,永远不要使用纯7位ASCII以外的任何东西。这些东西会来咬您的。在程序中处理文本时,请始终确保使用正确的编码。这并不简单。@编码器:源字符集和执行字符集不必相同(在运行时,可以与I/O例程通信的有效字符不一定与可能的
char
数据类型值相同,但这是另一种蠕虫)。
#include<iostream>

int main(){

    signed char c;
    std :: cin >> c;
    std :: cout << "The integer value of character entered is : " <<  int(c) << '\n';

    int m = 12 + c;

    std :: cout << m << "\n";

    return 0;
}