c - 在C中查找char的最大值

标签 c char max limit ansi-c

我通过简单的加法和测试数字何时变为负数来找到 char 的最大值:

#include<stdio.h>

/*find max value of char by adding*/
int main(){
  char c = 1;

  while(c + 1 > 0)
    ++c;

  printf("Max c = %d\n",(int)c);  /*outputs Max c = -128*/
  return 0;
}

while 循环提前测试,所以第一次 c+1 为负时它会中断,我们打印 c 的值。但是,程序输出的是负数!

为什么这个程序不输出127

最佳答案

在 while 条件中发生了隐式转换,这导致比较对 ints 而不是 chars 起作用。

如果你把它改成

while((char)(c + 1) > 0)
    ++c;

然后它将打印 127。

关于c - 在C中查找char的最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38576299/

相关文章:

c - C程序中的"Array subscript is not an integer"

c - 为什么C中的char指针可以是char数组

c++ - msdn使用winhttp C++上传图像

c++ - 如何在 C++ 中将十六进制值的字符数组转换为单个整数值?

java - 如何使用java计算InputStream的char?

opencv - 从openCv中的图像垫中找到所有局部最大值

binary - 仅使用位逻辑查找二进制中两个整数的最大值

c - 如果一个线程锁定了一个互斥量并且没有解锁它,那么其他线程不应该被阻塞吗?

c - 带字符串的长 IF 树

mysql - 五个表均来自第一个表,如果存在,则将其他表与第五个表中的最大值连接起来