我在64位机器上的C程序出错。错误如下。为了完全理解错误,我尝试了程序的一些变体,以查看何时没有出现错误/警告。随着变化,我希望更好地理解它。
这些程序是用
gcc -Wall -Werror -Wextra
错误:有符号和无符号整数表达式之间的比较
这个程序给了我错误。这就是我看到的模式。
#include <cstdio>
#include "stdint.h"
int main()
{
uint16_t len =10;
uint8_t number =5;
uint8_t number2 =10;
uint8_t * ptr =&number;
uint8_t * ptr2 =&number2;
if(len - sizeof(uint32_t) < ptr -ptr2)
{
printf("done\n");
}
return 0;
}
这段代码编译的文件没有上面的错误。我从中看到的模式是
#include <cstdio>
#include "stdint.h"
int main()
{
uint32_t len =1;
uint32_t len2 =3;
uint32_t number =5;
uint32_t number2 =10;
uint32_t * ptr =&number;
uint32_t * ptr2 =&number2;
if(len - len2 < ptr -ptr2)
{
printf("Worked\n");
}
}
这个程序编译良好,没有上述错误。我在这里看到的模式
#include <cstdio>
#include "stdint.h"
int main()
{
uint16_t len =2;
uint16_t len2 =5;
uint8_t number =5;
uint8_t number2 =10;
uint8_t * ptr =&number;
uint8_t * ptr2 =&number2;
if(len - len2 < ptr -ptr2)
{
printf("done\n");
}
}
问题
感谢您的任何帮助
我想是时候有人把我们在评论中学到的东西变成答案了,所以开始了。
在此实现下,<code>size_t</code>是一个无符号64位整数,<code>ptrdiff_t<-code>则是一个有符号的64位整数。
在第一次比较中,< code>if(len - sizeof(uint32_t)
在其他情况下(如果(len - len2
正如在主要章节中所解释的,Pascal指针是一个地址,它是存储在单词中的数值。 因此,您可以像对数值一样对指针执行算术运算。 有四个算术运算符可用于指针:递增,递减,+和 - 。 为了理解指针运算,让我们考虑ptr是一个整数指针,它指向地址1000.假设32位整数,让我们对指针执行递增操作 - Inc(ptr); 现在,在上述操作之后, ptr将指向位置1004,因为每次ptr递增时,它将指向下
如你所知,指针是一个数值的地址; 因此,您可以像对数值一样对指针执行算术运算。 可以在指针上使用四个算术运算符:++, - ,+和 - 要理解指针运算,让我们考虑ptr是一个指向地址1000的整数指针。假设32位整数,让我们对指针执行以下算术运算 - ptr++ ptr将指向位置1004,因为每次ptr递增时,它将指向下一个整数。 此操作将指针移动到下一个存储器位置,而不会影响存储器位置的实际值
c中的指针是地址,它是一个数值。 因此,您可以像对数值一样对指针执行算术运算。 可以在指针上使用四个算术运算符:++, - ,+和 - 要理解指针运算,让我们考虑ptr是一个指向地址1000的整数指针。假设32位整数,让我们对指针执行以下算术运算 - ptr++ 在上述操作之后, ptr将指向位置1004,因为每次ptr递增时,它将指向下一个整数位置,该位置是当前位置旁边的4个字节。 此操作将指
C++ 指针 指针是一个用数值表示的地址。因此,您可以对指针执行算术运算。可以对指针进行四种算术运算:++、--、+、-。 假设 ptr 是一个指向地址 1000 的整型指针,是一个 32 位的整数,让我们对该指针执行下列的算术运算: ptr++ 在执行完上述的运算之后,ptr 将指向位置 1004,因为 ptr 每增加一次,它都将指向下一个整数位置,即当前位置往后移 4 个字节。这个运算会在
问题内容: 使用算术运算符比较是否为内置类型(在这种情况下为整数)进行了定义? 语言规范的前两个比较部分和第三个比较部分之间的区别(Python的规范-您一定是在开玩笑))还是CPython的实现细节? 问题答案: 您真正可以使用的唯一有意义的比较是(或)。 出于各种原因,已从Python 3中删除了不同类型之间的比较-它们是常见的错误来源,并导致混乱。例如 在Python 3中,比较不同类型的值
下面是我的一个非常简单的问题: 如何使用RStudio计算vector_a和vector_b值之间的和、差和积。 和 它返回一个错误! 谁能解释这些基本计算的正确命令是什么?