void printchars()
{
for (x=128;x<224;x++)
write(x);
我希望x在write函数中是一个字符。我怎么能改变x被写入函数作为一个字符,但在循环中的int ?
如果你只是要剥离它的范围,那么制造x
和int
的意义是什么?这就是为什么这个要求很奇怪。你应该把x
变成unsigned char
—for(unsigned char x = 128; x <224; ++ x) { ...
。
如果你只是想确保你调用write<>
的unsigned char
模板专门化,然后这样调用它:
write<unsigned char>(x);
如果没有,则必须使用类型强制转换:
write((unsigned char)x);
编辑:我刚刚意识到你可能正在经历什么。我的猜测是,你最初使用char
,但发现一些错误的数字超过127。您可能应该为x
使用unsigned char
,而不是int
或char
。为了适应这一点,我修改了我的回答。char
的取值范围是-128到+127。unsigned char
的取值范围为0-255
将x转换为字符:
write(static_cast<char>(x));
请注意,x作为循环计数器也是可以的