Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 将两点中的哪一点与数组中的两个条目进行比较有意义吗?_C - Fatal编程技术网

C 将两点中的哪一点与数组中的两个条目进行比较有意义吗?

C 将两点中的哪一点与数组中的两个条目进行比较有意义吗?,c,C,在C语言中,我有一个数组inta[20]。我有两个指针int*pi和int*pj分别指向两个条目A[I]和A[j]。我不知道I和j。我想知道I>j或j当且仅当pi>pj,以及I==j当且仅当pi==pj?谢谢 是的,这是一个有效的比较。如果 pi = &A[i] = A + i 及 那是真的 (pi < pj) == (i < j) (pi

在C语言中,我有一个数组
inta[20]
。我有两个指针
int*pi
int*pj
分别指向两个条目
A[I]
A[j]
。我不知道
I
j
。我想知道
I>j
j
当且仅当
pi>pj
,以及
I==j
当且仅当
pi==pj
?谢谢

是的,这是一个有效的比较。如果

pi = &A[i] = A + i

那是真的

(pi < pj) == (i < j)
(pi
是的,这是一个有效的比较。如果

pi = &A[i] = A + i

那是真的

(pi < pj) == (i < j)
(pi
是的,指针上的
运算符定义为以这种方式工作

对于不指向同一对象或刚过其末端的指针,
的行为是未定义的<代码>=
=定义良好

参考:6.5.8,第5段:

比较两个指针时,结果取决于相对值 指向的对象的地址空间中的位置。如果两个 指向对象类型的指针都指向同一对象,或者都指向 超过同一数组对象的最后一个元素一次,它们进行比较 相同的如果指向的对象是同一聚合的成员 对象,指向稍后声明的结构成员的指针 而不是指向结构中前面声明的成员的指针,以及 指向具有较大下标值的数组元素的指针比较 大于指向同一数组中具有较低 下标值。指向同一联合对象成员的所有指针 比较平等。如果表达式
P
指向 数组对象和表达式
Q
指向 同一数组对象,指针表达式Q+1比较 大于
P
。在所有其他情况下,行为是未定义的

是的,指针上的
运算符就是这样定义的

对于不指向同一对象或刚过其末端的指针,
的行为是未定义的<代码>=
=定义良好

参考:6.5.8,第5段:

比较两个指针时,结果取决于相对值 指向的对象的地址空间中的位置。如果两个 指向对象类型的指针都指向同一对象,或者都指向 超过同一数组对象的最后一个元素一次,它们进行比较 相同的如果指向的对象是同一聚合的成员 对象,指向稍后声明的结构成员的指针 而不是指向结构中前面声明的成员的指针,以及 指向具有较大下标值的数组元素的指针比较 大于指向同一数组中具有较低 下标值。指向同一联合对象成员的所有指针 比较平等。如果表达式
P
指向 数组对象和表达式
Q
指向 同一数组对象,指针表达式Q+1比较 大于
P
。在所有其他情况下,行为是未定义的



是的,当然,我希望你们知道。是的,这是有效的,因为这就是编译器如何使用
A[I]
*(A+I)
,所以数组得到这样的分配。指针体操在C中很常见,只要知道你们所指类型的大小:)是的,当然,我希望你们知道。是的,有效,因为这就是编译器使用
A[i]
*(A+i)
的方式,所以数组得到这样的分配,请注意您所指类型的大小:)我认为您希望在上一个语句中使用等效而不是等效。在本例中,等效源于等效,它通过颠倒
I
j
@FilipeGonçalves的角色,你的区别是什么?@Felipe我们在这里专门讨论C编程语言,其中表达式
x
既有逻辑意义,又有数值。@JeremyWest-Fair,我明白你的意思。没关系,我只是吹毛求疵:P,但是的,在C上下文中它是有意义的。我想你想在上一个语句中使用等价而不是等价。等价是从等价开始的,在这个例子中,等价是通过颠倒
I
j
@FilipeGonçalves的角色,你的区别是什么?@Felipe我们在这里专门讨论C编程语言,其中表达式
x
既有逻辑意义,又有数值。@JeremyWest-Fair,我明白你的意思。没关系,我只是吹毛求疵:P,但是的,在C上下文中是有意义的。在“增加内存地址”中也定义了数组分配(我的意思是在C标准中)?我认为是的,因为编译器将
A[I]
视为
*(A+I)
。@GrijeshChauhan是的。”==并且“增加内存地址”中的数组分配也被定义了(我的意思是在C标准中)?我认为是的,因为编译器将
A[I]
视为
*(A+I)
。@GrijeshChauhan是的,是的。”==和