小编Sag*_*r P的帖子

Big Endian和Little endian有点混乱

我正在阅读来自这个网站http://www.geeksforgeeks.org/little-and-big-endian-mystery/的小端和大端代表.

假设我们有一个数字0x01234567,那么在little endian中它存储为(67)(45)(23)(01),而在Big endian中它存储为(01)(23)(45)(67).

char *s= "ABCDEF"
int *p = (int *)s;
printf("%d",*(p+1)); // prints 17475 (value of DC)
Run Code Online (Sandbox Code Playgroud)

在上面的代码中看到打印值后,似乎字符串存储为(BA)(DC)(FE).

为什么它不像第一个例子那样从LSB存储到(MS)(CD)(AB)到MSB?我认为endianess意味着在多字节内排序字节.那么排序应该是关于"整个2字节",如第二种情况,而不是在那2个字节内吗?

c pointers endianness

2
推荐指数
1
解决办法
1059
查看次数

Postfix增量运算符评估

是否在计算表达式之后或在评估整个语句之后评估后缀增量/减量运算符?

#include<stdio.h>

void main()
{
  int a=0;
  int b=0;

  printf("%d %d",a||b,b++);  // Output is 1 0

}
Run Code Online (Sandbox Code Playgroud)

我的编译器从右到左评估printf参数.表达式a || b的答案是1,这意味着b在评估|| b之前已经递增(即b在评估表达式b ++之后立即递增)

我在这里阅读C++中的增量 - 何时使用x ++或++ x?在整个语句之后计算后缀增量/减量.

哪个是对的?

c parameter-passing expression-evaluation operator-precedence

-3
推荐指数
1
解决办法
291
查看次数