Tag: int

将int和const int转换为float时的结果不同

有人能够解释为什么int和const int在转换为float并在浮点数学中使用时给出不同的结果? 例如,参见这段代码: int _tmain(int argc, _TCHAR* argv[]) { int x = 1000; const int y = 1000; float fx = (float) x; float fy = (float) y; printf(“(int = 1000) * 0.3f = %4.10f \n”, 0.3f*x); printf(“(const int = 1000) * 0.3f = %4.10f \n”, 0.3f*y); printf(“(float)(int = 1000) * 0.3f = %4.10f \n”, […]

在C中存储以零开头的值变异,为什么?

例如: int main(){ int x = 01234567; printf(“\n%d\n”,x); return 0; } 以下代码生成:342391 如果我在开头没有包含0,那么值x将是1234567,为什么C以这种方式存储值并且有没有办法让它不这样做?

C如何计算没有浮点精度的百分比(perthousands)

如何计算从2个int值到表示百分比的int值的百分比(为了更准确度,数百个)? 背景/目的:使用没有FPU的处理器,浮点计算需要花费100倍的时间。 int x = 25; int y = 75; int resultPercentage; // desire is 250 which would mean 25.0 percent resultPercentage = (x/(x+y))*1000; // used 1000 instead of 100 for accuracy printf(“Result= “); printf(resultPercentage); 输出: 结果= 0 当我真正需要的是250.我不能使用任何浮点计算。 正常fpu计算的示例: int x = 25; int y = 75; int resultPercentage; // desire is 250 which […]

C中unsigned int的行为

C中无符号整数的大小为0 to 65,535 or 0 to 4,294,967,295 。 我在C中测试了以下代码: unsigned int number = 0; number -= 300; printf(“%d\n”, number); 输出:-300 我记得如果unsigned int变量的值低于0,它应该回绕并且我期望输出类似于4294966996 。 但是从控制台打印的输出是-300 。 我在C ++中测试了类似的语句,它确实给了我4294966996 。 我的问题是:为什么输出-300尽管它是一个unsigned int ? PS:我查看过几个标题相似的post,但他们没有解决同样的问题: 在C中签名vs unsigned int 无符号整数差异的意外结果

如果我在全局范围内声明一个没有大小的数组,我会得到什么?

在C中打高尔夫球技巧 的答案之一中 ,我看到了这段代码(ungolfed版本): s[],t; main(c){ for(scanf(“%*d “); ~(c=getchar()); s[t++]=c) putchar(s[t]); } 我认为上面的节目展示了UB(但谁在关心代码高尔夫?)。 但我不明白的是全局范围内的s[] 。 我知道当未指定全局变量的类型时,它默认为int 。 我创建了一个令人惊讶的编译的小程序: #include int s[]; int main(void) { printf(“Hello!”); } 虽然它发出一个警告: prog.c:23:5: warning: array ‘s’ assumed to have one element [enabled by default] int s[]; ^ 上面的程序是什么? 它是int*还是别的什么? 这在任何地方都有用吗?

将printf移动到不同的行会产生不同的输出? (C)

在C中,当我移动这个printf行时: printf(“%f\n”, 5 / 2); 它的输出变化到不同的行。 有任何想法吗? inheritance人代码: #include #include int main() { int a = 65; char c = (char)a; int m = 3.0/2; printf(“%c\n”, c); printf(“%f\n”, (float)a); printf(“%f\n”, 5.0 / 2); printf(“%f\n”, 5 / 2.0); printf(“%f\n”, (float)5 / 2); printf(“%f\n”, 5 / (float)2); printf(“%f\n”, (float)(5 / 2)); printf(“%f\n”, 5.0 / 2); printf(“%d\n”, m); […]

在C中更改int中的位?

所以我有一个16位数。 假设它的变量名是Bits。 我想让Bits [2:0] = 001,100和000,而不改变其他任何东西。 我不知道该怎么做,因为我能想到的是ORing我希望与1成为1的位,但我不确定如何清除其他位以使它们为0.如果有人有建议,我很感激。 谢谢!

存储(和打印)整数的最大数据类型是什么?

在32位系统的C中,哪种数据类型将存储(并因此可以打印)最大的整数? 是long long还是unsigned long ? 有没有unsigned long long ? 哪个是最精确和政治正确的?

为什么sizeof(int)== sizeof(long)?

在下面列出的程序中,sizeof(int)和sizeof(long)在我的机器上是相等的(都等于4个字节(或32位))。 据我所知,很长一段是8个字节。 它是否正确? 我有一台64位机器 #include #include int main(void){ printf(“sizeof(short) = %d\n”, (int)sizeof(short)); printf(“sizeof(int) = %d\n”, (int)sizeof(int)); printf(“sizeof(long) = %d\n”, (int)sizeof(long)); printf(“sizeof(float) = %d\n”, (int)sizeof(float)); printf(“sizeof(double) = %d\n”, (int)sizeof(double)); printf(“sizeof(long double) = %d\n”, (int)sizeof(long double)); return 0; }

从字符串C获取int值

鉴于我有以下内容: char str[] = “1524”; int nr; 我想在’nr’中得到1524号码。 在C中实现这一目标的最佳方法是什么?