Tag: int

scanf()in while循环没有终止?

我有一个while循环,它扫描一组输入整数。 它扫描并打印所有数字,最后带有“…”,然后跳到下一行。 但是,脚本不会:执行while循环并打印TEST。 例如,我输入:3 44 62 1 打印:3 …… 44 … 62 … 1 … 什么时候打印:3 …… 44 … 62 … 1 … 测试 while(scanf(“%d”, &n) != -1) { x[i] = n; i++; printf(“%d”, n); printf(“…\n”); } printf(“TEST”); 我究竟做错了什么?

将int数组转换为short *时,为什么为元素赋值会覆盖整个整数?

我正在观看Jerry Cain的Programming Paradigms Lecture 3video ,其中展示了在int数组和短数组之间进行元素分配后的效果。 本质上,参数是如果你要分配一个int数组元素arr[3] = 128 ,然后暂时将int数组转换为short *并指定arr[6] = 2 ,则arr [3]应该变为128 + 512 = 640因为2将被解释为处于第2 ^ 9位置。 代码演示: #include int main() { printf(“sizeof(int) is %lu\n”, sizeof(int)); printf(“sizeof(short) is %lu\n”, sizeof(short)); int arr[5]; arr[3] = 128; ((short*)arr)[6] = 2; printf(“arr[3] is equal to %d\n”, arr[3]); //expect 640, get 2 instead return 0; […]

如何在c中没有`scanf()`的情况下得到整数和浮点输入?

如何在不使用scanf()情况下将用户给定的整数和浮点值赋给变量或数组? 就像我们有char和string getchar , fgetc , fgets …等,是否有浮点数和整数的函数?

在C中将字符串解析为long

我在python中编写了一个服务器,在C中编写了客户端。 python服务器将“1 1000 \ n”发送到C客户端。 收到此字符串的C函数应将其解析为两个long int。 void receive_job() { char tmp_buffer[256]; long start, stop; recv(sock, tmp_buffer, 255, 0); /* here I wonder how I can parse tmp_buffer to set start and stop values. */ } 我对C不是很精通,所以我很感激对此发表评论。

32位与64位环境中的int_max

INT_MAX在32位和64位环境之间是否不同? 虽然我听说人们说64位环境只使用32位环境的INT_MAX,但似乎情况确实如此。

使用大整数数组

如何使用大整数,我需要GMP库吗? 我想要一个元素,其元素从0到2 ^ 32开始 如何让这个工作: #include int main(){ unsigned int i,j=0,sz=4294967295; unsigned int A[sz]; A[j]=0; for(i=1;i<=sz;i++){ A[i]=A[j]+1 ; j++; printf("%u\n",A[i]); } return 0; } 错误:进程退出,返回值为3221225725 数组是太大还是什么?

C – 当时读取一个int

我有这个输入: 输入:2015年 我想像这样扫描他: scanf(“%1d”, &arr); 但这绝对是错误的。 我能做什么? 我希望通过整数接收输入整数,如’2’,’0’,’1’,’5’,而不是像“2015”。

为什么我能用hex表示大于MAXINT的int,而不是十进制?

据我所知,十进制和hex只是(假设)一个int的表示。 这意味着如果我定义一个整数, x我应该能够将x打印为: 小数: printf(“%d”, x); hex: printf(“%x”, x); 我不明白的是当x超过MAXINT时这是如何表现的。 以下面的代码为例: #include int main(int argc, char** argv) { // Define two numbers that are both less than MAXINT int a = 808548400; int b = 2016424312; int theSum = a + b; // 2824972712 -> larger than MAXINT printf(“%d\n”, theSum); // -1469994584 -> Overflowed printf(“%x\n”, […]

关于运营商“&”的问题

可能有错误的标题,但我不知道如何描述它。 int x=0x4a; h=!(0x80000000000&(0x39+(~x+1))); 结果是h = 0。 问题是x有32位,而0x80000000000有32位以上。 如果我将变量i设置为0x80000000000并将其打印为hex格式,则它将显示0.因此,在这种情况下,为什么h的结果为1,因为0x80000000000变为0? 我用的语言是C.

C – 使用_int16时的exception

可能重复: 正确使用具有固定大小类型的scanf / printf(和系列)的方法? 我在Visual Studio中编写了以下程序: 在运行程序并退出时,我收到错误消息“堆栈变量b已损坏”。 如果我用int替换_int 16,则不会引发exception。 我该怎么解决这个问题呢? 我必须使用_int16,因为我想模拟整数溢出。 谢谢 :)