大小比较的类型不匹配问题

char c[10000];

...........//省略n行代码

if ( c[0] == 0xaa ) ............


编译器说comparison is always false due to limited range of data type


于是把if括号里表达式写成(int)c[0] == 0xaa,就是先强制转换再比较,但是编译器还是提示上面的东西


不管它,直接运行,运行结果和预想的不一样。。。。。。好吧,编译器你赢了


于是写了段测试代码:

//===================================================

char c = 0xaa;

if ( (int)c == 0xaa ) printf("True"); else printf("False");

//===================================================

运行结果是False


换个类型:

//===================================================

char c = 0xaa;

if ( (unsigned int)c == 0xaa ) printf("True"); else printf("False");

//===================================================

结果还是False


实际上,(int)c的值是-86,而(unsigned int)c的值是4294967210,都不是0xaa

原因看另一篇日志吧。


最后我是这么改的:

if ( c == (char) 0xaa ).........

ok了



在 MATLAB 中,数组大小不匹配的错误通常是由于矩阵维度不匹配或索引超出矩阵维度等问题导致的。为了解决这个问题,您可以考虑以下几种方法: 1. 检查数组的维度和大小是否匹配。如果您在进行矩阵运算或索引时出现了错误,可以通过 `size` 函数查看数组的大小和维度,以确保它们符合您的预期。如果需要,您可以使用 `reshape` 函数重新调整数组的大小和维度。 2. 检查索引是否超出了数组的维度。如果您在对数组进行索引时出现了错误,可以确保您的索引值不超出数组的大小和维度。如果需要,您可以使用 `if` 语句或 `try-catch` 语句来检查和处理可能的索引错误。 3. 检查数组元素的类型是否匹配。如果您在进行矩阵运算时出现了错误,可以检查数组元素的类型是否匹配。例如,如果您尝试将一个字符串与一个数值相乘,就会出现数组大小不匹配的错误。在这种情况下,您可以使用 `str2double` 函数将字符串转换为数值,然后再进行运算。 4. 检查您的代码逻辑是否正确。如果以上方法都无法解决问题,那么可能是您的代码逻辑有误。您可以使用调试工具(如 `dbstop` 和 `dbstep`)来逐行检查您的代码,查找问题所在。此外,您还可以考虑重新审视您的代码逻辑,以确保它符合您的预期。 总之,数组大小不匹配的错误通常是由于矩阵维度不匹配、索引超出矩阵维度、数组元素类型不匹配或代码逻辑有误等问题导致的。通过检查数组的维度和大小、索引是否超出数组的维度、数组元素的类型是否匹配以及代码逻辑是否正确等方法,可以解决数组大小不匹配的错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值