Tag: int

在C中,你有一个128位的位域

以下代码是否合法? struct BigInt { uint64_t a : 128; };

从unsigned long int转换为signed int,反之亦然

我想将一个signed int传递给gsl_rng_uniform_int (const gsl_rng * r, unsigned long int n) 。 我传递的signed int大于或等于零。 该函数将返回一个介于0和n之间的数字,因此如果我传递一个正的signed int,它将返回一个在signed int范围内的数字。 然后我想将返回值存储在signed int中。 用明显的预期行为来做到这一点最简洁的方法是什么? 我在64位Linux机器上使用64位编译器。 更新抱歉,伙计们。 请忽略。 我的代码问题其实在其他地方。 我误解了gdb的输出。

转换为int时浮点数为何在C下面舍入?

在一次采访中,有人问我对以下代码有何看法: #include int main() { float f = 10.7; int a; a = f; printf (“%d\n”, a); } 我回答了: 当您将float更改为没有float转换的int ,编译器将发出警告。 由于您没有使用强制转换,因此int将具有垃圾值。 然后,他们允许我在在线编译器上运行程序。 我不堪重负。 我的假设都是错误的。 编译器没有发出任何警告,并且int的值为10.即使我改变了, float值为10.9或10.3,答案也是一样的。 即使投了一个cast并没有改变结果。 有人能告诉我为什么会发生这种情况,结果会在什么情况下有所不同。 注意:在编译时,面试官告诉我不添加gcc标志。 编辑:现在我已经明白,浮动不会四舍五入,答案将是10.但有人可以解释我为什么这样设计? 转换为int时为什么浮动,在下面四舍五入? 有具体原因吗?

C指定大于数据类型范围的值

在C int类型中,可以具有以下+ ve范围的值2,147,483,647 来源 : https : //msdn.microsoft.com/en-IN/library/s3f49ktz.aspx 我想知道如果我指定大于int的值可以容纳,如何截断值或者确切地存储什么,如果我这样做会发生什么 int var = 2147483648;

使用%d insde printf打印浮点值会产生意外输出

#include #include using namespace std; int main() { float f=11.11; printf(“%d”,f); } 当我在dev c ++中执行以下代码时,它给出输出-536870912。 当我在在线教程上执行相同的代码时,点编译器在每次运行时都会有所不同。 背后的原因是什么?

如果我输入一个等于INTMax + 1的数字,计算机不会返回-1

int类型的长度是4个字节,我在Ubuntu下用C编写了一个小程序来打印我刚刚输入的数字。 当我输入2147483648,即2 ^ 31时,它打印2147483647而不是-1。 当我输入任何大于2147483647的数字时,会发生同样的事情。为什么它不会溢出到-1,因为我学习了表格书,但似乎被截断为INT_Max并且在比特级别发生了什么? #include int main(){ int x; scanf(“%d”,&x); printf(“%d\n”,x); } 我犯了一个错误。 INT_Max + 1应等于INT_Min。 我修改了代码: #include int main(){ int x=2147483647; int y=x+1; printf(“%d”,y); } 输出是-2147483648现在我只是想知道当我调用函数scanf时发生了什么? 我认为它将所有大于2147483647的输入数字截断为2147483647。

C系统呼叫和消息

我试图通过传递带有该调用的消息来传递指向系统调用的指针。 指针应该是int []。 但是,消息定义需要传递char指针。 如何发送int指针? int pidarray[j]; m.m1_p1 = pidarray; 是否可以转换指针类型?

将用户输入限制为8位数

我希望用户输入一个8位数的帐号。 我有的代码似乎适用于所有内容,除非你有多个字母,即:’bbb’作为输入。 如果发生这种情况,它会运行while循环3次,显示printf,但不要求另一个输入。 关于如何解决这个问题的任何意见,或者更好的方法都是受欢迎的! 现在,我正在使用: #include int main() { int return_val = 0; int account_number = 0; int within_range = 0; printf(“Please enter your 8 digit account number:\n”); return_val = scanf(“%d”, &account_number); getchar(); getchar(); if((account_number > 9999999) && (account_number 9999999) && (account_number < 99999999)) { within_range = 1; } } printf("Account #: %d", account_number); }

计算C中字符串中的大写和小写字母数

我想创建一个代码来查找大写和小写字母的数量。 所以举个例子 input: HelloGUYS Output: 4 5 我的代码是这样的: #include #include int main() { int i, longitud; int X[26]; char line[1010]; for(i=0; i<26; i++) { X[i] = 0; } while(gets(line)) { longitud = strlen(line); for(i=0; i= ‘a’ && line[i] = ‘A’ && line[i] <= 'Z') { X[line[i] – 'A']++; } } } for(i=0; i<26; i++) { […]

在C中填充来自字符串的2d数组

我想用一些数字填充二维数组。 数字采用网格格式,如下所示: 08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08 49 49 99 40 17 81 18 57 60 87 17 40 98 43 69 48 04 56 62 00 81 49 31 73 55 79 14 29 93 71 40 67 53 […]