Tag: 整数

位域声明中的整数宽度是否相关?

我试图找到一个我不应该写的原因 struct bitfield { signed foo:4; unsigned bar:2; }; 而不是详细说明 struct bitfield { signed int foo:4; unsigned int bar:2; }; 由于在冒号后明确指定了位域的每个成员的大小,是否有任何缺点? 如果我使用char , short , long , long long ,这有关系吗? 指定的位域位数必须总是小于声明类型的宽度吗? 发现了一些相关问题: 除int之外的其他类型的位域? 在位域内声明不同数据类型有什么用? 答案范围从 不要使用除(signed / unsigned) int或_Bool之外的任何其他类型 _Bool , signed int , unsigned int或其他一些实现定义的类型。 (C99 6.2.7.1(4)) 在这种情况下:这个非特定的其他实现定义类型可能是什么样的,以及我在这个地方的选择可能会产生哪些其他缺点?

从数组中输入几个数字,每个数字检查是否为整数

大家! 我希望有人可以帮助我找出C语言的东西。 这是我在IT方面的第一次认真的功课,我没有经验,而且我在电子学习中学习,所以老师的帮助不是很好。 我需要用C语言开发控制台应用程序。 用户需要输入10个整数,如果插入号不是整数,则需要输出错误并再次输入新的数字,直到插入所有10个整数。 如果我说这10个数字不能为0(我确保我的if-else语句正常工作),但是当我想要检查每个输入数字是否会检查时,一切都有效整数与否。 我怎么能做对 请帮忙 到目前为止我的代码看起来像这样: #include #include int main() { int i; float f; int numbers[10]; for (i = 0; i < 10; i++) { scanf ("%d", &numbers[i]); if (numbers[i] != 0) { scanf ("*%d", &numbers[i]); } else { printf ("\nError!Entered number is't integer \n"); printf ("\nPlease insert number again \n"); […]

如何在C中应用最后一个整数提升规则?

6.3.1.8p1:否则,将对两个操作数执行整数提升。 然后将以下规则应用于提升的操作数:如果两个操作数具有相同的类型,则不需要进一步转换。 否则,如果两个操作数都具有有符号整数类型或两者都具有无符号整数类型,则具有较小整数转换等级类型的操作数将转换为具有更高等级的操作数的类型。 否则,如果具有无符号整数类型的操作数的秩大于或等于另一个操作数的类型的等级,则具有有符号整数类型的操作数将转换为具有无符号整数类型的操作数的类型。 否则,如果带有符号整数类型的操作数的类型可以表示具有无符号整数类型的操作数类型的所有值,则具有无符号整数类型的操作数将转换为带有符号整数类型的操作数的类型。 否则,两个操作数都转换为无符号整数类型,对应于带有符号整数类型的操作数的类型。 对于要应用的粗体规则,它似乎暗示您需要具有无符号整数类型,其等级小于有符号整数类型, 并且有符号整数类型不能保存无符号整数类型的所有值。 是否存在这种情况的现实世界的例子,或者这个声明是否涵盖所有可能的排列?

整数及其负数的按位OR的目的

我很好奇NaN在IEEE单精度和双精度浮点中的实现和表示,我发现这是“NaN”函数的实现。 即: int isnan(double x) { int32_t hx,lx; // Move lower 32 bits of double to lx, higher 32 to hx. EXTRACT_WORDS(hx,lx,x); // Remove sign bit, since -NaN and NaN are both NaN. hx &= 0x7fffffff; // Equivalent to hx |= (lx != 0). hx |= (u_int32_t)(lx|(-lx))>>31; // Difference is negative iff (hx & 0x7ff00000) […]

如何确定scanf是否读取格式中指定的内容?

我有一个定义变量int data 该程序使用scanf(“%d”,&data)从stdin读取数据。 如果来自stdin的数据不是整数,我必须打印错误消息。 我试过if(scanf(“%d”,&data) ==EOF){ printf(“error”);return 1;} 它对我不起作用。 那么,我如何确定scanf是否失败或成功?

为什么以下程序会发生溢出?

void main () { int i; if (i < 0) { i = -i; }; } 任何人都可以帮我理解为什么在上述程序中可能出现溢出?

显示在输入的数字之前。 (C编程)

C编程 要求用户输入介于1和100之间的随机数。然后询问他想要显示的数字在他输入的第一个数字之前。 假设用户输入9并希望3个数字在9之前,您的程序应显示:•6 7 8 9 不知道需要一些帮助。

C变量混乱

在我的一项任务中,我看到使用了这一行: int index = -1, k; 我不确定当一个变量有条目时会发生什么。 当它有两个条目时,变量“index”究竟是什么?

如何使用Android NDK将整数颜色的像素数组绑定到纹理?

我正在尝试将Android上的Java OpenGL代码移植到Native SDK,我需要一个IntBuffer实现。 基本上我在Java中将任意整数RGBA像素颜色数组加载到纹理中是: // pixel array pixelIntArray = new int[width * height]; bb = ByteBuffer.allocateDirect(pixelIntArray.length * 4); bb.order(ByteOrder.nativeOrder()); // native buffer pixelBuffer = bb.asIntBuffer(); // push integer array of pixels into buffer pixelBuffer.put(pixelIntArray); pixelBuffer.position(0); // bind buffer to texture gl.glTexImage2D(GL10.GL_TEXTURE_2D, 0, GL10.GL_RGBA, width, height, 0, GL10.GL_RGBA, GL10.GL_UNSIGNED_BYTE, pixelBuffer); 在C中,我可以使用缓冲区将纹理推送到四边形。 目前我只是将它绑定到C中的pixelIntArray,纹理变形。 基本上我需要能够通过类似于Java的NIO类的缓冲区将整数像素数组中的一系列颜色绑定到纹理。

整数转换排名和促销

阅读整数提升和整数转换排名我找到了这个链接 1.如果两个操作数具有相同的类型,则不需要进一步转换。 2.否则,如果两个操作数都有有符号整数类型或两者都有无符号整数类型,则具有较小整数转换等级类型的操作数将转换为具有更高等级的操作数的类型。 3.否则,如果具有无符号整数类型的操作数的秩大于或等于另一个操作数的类型的等级,则具有有符号整数类型的操作数将转换为具有无符号整数类型的操作数的类型。 4.否则,如果带有符号整数类型的操作数的类型可以表示具有无符号整数类型的操作数类型的所有值,则具有无符号整数类型的操作数将转换为带有符号整数类型的操作数的类型。 5.否则,两个操作数都转换为无符号整数类型,对应于带有符号整数类型的操作数的类型。 积分1 2 3完全清楚,但我仍然没有提出案例4和5的例子。有人可以提供一个关于任何实施的例子吗? 据我所知,整数转换等级是: _Bool <char <short <int <long <long long int 无论与类型相关的字节大小是相等还是更高。 对? 关于从一种类型到另一种类型的促销或转换。 添加到最低类型为零或1或左极端位的位是否会对此产生影响? 我想知道位视图中的进程如何特别是对于转换。 对于整数提升,它可以毫无疑问地保存值和符号。