繁体   English   中英

使用结构值将C中的char转换为int

[英]char to int in C with struct values

我试图互相比较两个字符,但将它们视为整数。 这些是链表中的结构值。 我已经打印出temp->next->variabletemp->variable并确认if语句应该成立, ex: 3 > 2 但是我认为这可能不起作用,因为它们是char

它们是char值的事实是否会对比较产生影响?

if(temp->next->variable > temp->variable)
{
    ....
}

根据C标准(6.5.8关系运算符)

3如果两个操作数都具有算术类型,则执行常规的算术转换。

通常的算术转换包括整数提升,这特别意味着将char类型的对象转换为int类型的对象

考虑到char类型可以表现为unsigned charsigned char类型。 因此,如果设置了char类型的对象的符号位,则可以得到不同的比较结果。

字符是8位长度的整数,因此,如果您始终将字符视为整数,则将具有所需的确切行为。 警惕,因为某些编译器允许char默认为无符号,有些允许默认为带符号,这可能会随机产生问题。 (如果两个数字具有相同的最高阶位,则不会有任何区别,否则结果将与您期望的相反,如果符号也与您期望的相反)。

如果您将它们视为字符,那么这将给您它们的字典比较,该比较基于该字符的内部整数表示。 检查您的语言环境可能是很好的-程序是否将使用ASCII或Unicode 8位查找表,或其他方式。

如果仍然存在隐藏的问题,则常见的错误是有许多分层的指针,即使始终使用箭头[->],您仍可能需要应用取消引用[*],否则您会秘密地测试它们在内存中的相对位置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM