For循环写特殊符号

发布于 2024-12-09 06:42:31 字数 151 浏览 0 评论 0原文

void printchars()
{
  for (x=128;x<224;x++)
      write(x);

我希望 x 是 write 函数中的一个字符。如何更改写入函数将 x 视为 char,而不是循环中的 int?

void printchars()
{
  for (x=128;x<224;x++)
      write(x);

I want the x to be a char in the write function. How can i change the x to be treated by the write functions as a char, but an int in the loop?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

舞袖。长 2024-12-16 06:42:31

如果您只是想去掉它的范围,那么将 x 设为 int 有何意义?这就是为什么这是一个非常奇怪的请求。您应该将 x 设为 unsigned char -- for(unsigned char x = 128; x <224; ++ x) { ....

如果您只是想确保调用 write<>unsigned char 模板特化,则可以这样调用:

write( x);

如果没有,那么你将不得不使用类型转换:

write((unsigned char)x);

编辑:我刚刚意识到你可能会做什么正在经历。我的猜测是,您最初使用 char 但发现超过 127 的数字有问题。您可能应该使用 unsigned char 作为 x 而不是intchar。我编辑了我的答案以适应这一点。 char 的范围是 -128 到 +127。 unsigned char 的范围是 0-255。

What is the point of making x an int if you're just going to strip away its range? That's what makes this a very strange request. You should just make x a unsigned char -- for(unsigned char x = 128; x <224; ++ x) { ....

If you just want to ensure you're calling the unsigned char template specialization of write<>, then call it like this:

write<unsigned char>(x);

If not, then you will have to use type casting:

write((unsigned char)x);

Edit: I just realized what you might be experiencing. My guess is that you originally used char but found something wrong with numbers over 127. You should probably be using unsigned char for x instead of either int or char. I edited my answer to accommodate this. char has a range of -128 to +127. unsigned char has a range of 0-255.

不疑不惑不回忆 2024-12-16 06:42:31

将 x 转换为 char:

write(static_cast<char>(x));

请注意,x 也可以是 char 作为循环计数器。

Cast x to a char:

write(static_cast<char>(x));

Note that it is ok for x to be a char as the loop counter as well.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文