设有定义:int i=12345;,下列选项中,取i的百位上数字的表达式是______。
时间: 2024-04-02 10:32:41 浏览: 11
可以通过以下两种表达式取出 i 的百位数字:
1. `(i / 100) % 10`
2. `(i % 1000) / 100`
两种表达式的思路都是先将百位及以上的数字去掉,然后再取个位数字。
因此,答案有两种可能的表达式:
1. `(i / 100) % 10`
2. `(i % 1000) / 100`
请问您需要哪一个表达式呢?
相关问题
设有定义: int x=2;, 以下表达式中值不为6的是__ A. x=x+1, 2*xB. x=(x+1, 2*x)C. x*=(1+x) D. x*=x+1 并解释a,b,c,d的原因'
表达式 A、C、D 的值都为 6,而表达式 B 的值为 4。
A:x=x+1,表示将 x 的值加 1,变成 3,然后将结果赋值给 x,所以 x 的值变成了 3。接着 2*x 的值是 6,所以整个表达式的值是 6。
B:x=(x+1, 2*x),逗号表达式会依次计算每个子表达式,并返回最后一个子表达式的值。所以,先计算 x+1,得到 3,但这个值并没有用到。接着计算 2*x,得到 4,这个值被赋值给了 x,所以 x 的值变成了 4。整个表达式的值是 4。
C:x*=(1+x),相当于 x = x * (1+x),即 x = 2 * (1+2) = 6,所以表达式的值是 6。
D:x*=x+1,相当于 x = x * (x+1),即 x = 2 * (2+1) = 6,所以表达式的值是 6。
因此,选项 B 的值不为 6,而其他选项的值都为 6。
__m128i and __int128
__m128i和__int128是两个不同的数据类型。
__m128i是SSE2中定义的数据类型,用于表示128位整数向量。它是一个union,可以通过不同的成员访问不同的数据类型,包括有符号整数、无符号整数和字节等。它的定义如下:
```c
typedef union __declspec(intrin_type) _CRT_ALIGN(16) __m128i {
__int8 m128i_i8[16];
__int16 m128i_i16[8];
__int32 m128i_i32[4];
__int64 m128i_i64[2];
unsigned __int8 m128i_u8[16];
unsigned __int16 m128i_u16[8];
unsigned __int32 m128i_u32[4];
unsigned __int64 m128i_u64[2];
} __m128i;
```
__int128是C语言中的整数类型,用于表示128位整数。它可以存储更大范围的整数值,但在大多数平台上不是原生支持的数据类型。如果需要使用__int128类型,可能需要使用特定的编译器扩展或库来支持。
因此,__m128i和__int128是不同的数据类型,用途和实现方式也不同。