为什么一个给我一个int而另一个不给我?
toupper(member_names[2]);
和:
member_names[2] = toupper(member_names[2]);
最佳答案
toupper
接受一个字符(出于大多数历史原因将其编码为int
)并返回该字符的大写形式。
因此,您的第一个版本并没有真正完成任何事情。您的第二个将member_names[2]
转换为大写形式。
还要注意(在大多数实现中)char
可以具有负值(例如,ISO 8859- *中带重音符号的字符)。将负值传递给toupper
可能/将导致(严重)问题-除非member_names
是unsigned char
的数组,否则通常需要在传递给unsigned char
之前将其设置为toupper
:
member_names[2] = toupper(static_cast<unsigned char>(member_names[2]));
关于c++ - 为什么这样使用这些工具会有所不同?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29859965/