Tag: int

C将浮点数转换为int

我正在使用C (不是C ++)。 我需要将浮点数转换为int 。 我不想舍入到最接近的数字,我只是想消除整数部分之后的内容。 就像是 4.9 – > 4 .9 – > 4

if语句整数

我认为这是一个简单的问题,但我正在努力解决以下问题。 在示例中,我有以下语句(语言是C): int foobar if (foobar) { // do something. } 现在,如果我对此是正确的,当foobar不为零时,这种说法是正确的。 所以它应该与if(foobar!= 0)相同; 但是如果foobar变成负数会怎么样?

在C中,如何将整数插入字符串?

我的代码获取了一串字符。 例如“aaabbdddd”函数将字母及其出现的次数插入新字符串。 因此,此特定字符串的输出应为“a3b2d4”。 我的问题是如何将数字插入字符串? 我尝试使用itoa并将整个字符串转换为单个数字。 这是我的代码: #define _CRT_SECURE_NO_WARNINGS #include #include #include #define LONG 80 #define SHORT 20 void longtext(char longtxt[LONG], char shorttxt[SHORT]) { int i, j=0, count=0, tmp; char letter; for (i = 0; i <= strlen(longtxt); ++i) { if (i == 0) { letter = longtxt[i]; ++count; } else if (letter == longtxt[i]) ++count; […]

为什么在C程序中int 070的输出是56?

你能解释一下吗? 为什么它给出了56个值作为输出? #include #include void main() { int x = 070; printf(“%d”, x); getch(); }

我可以将4294967295存储在unsigned int中吗? Int在我的机器上是4个字节

为什么我得到0? 和编译器警告: 格式’%d’需要’int’类型的参数,但参数3的类型为’long unsigned int’ 这是代码: #include //function declerations… int power(int base, int on); int main(void) { printf(“%d”,power(2, sizeof(int)*8)-1); return 0; } int power(int base, int on) { int pf = 1; for (int i = 0; i < on; i++) { pf *= base; } return pf; } 如果int是我的系统上的4个字节,我想我应该能够将4294967295存储在unsigned int中。

当我输入一个十进制而不是一个int到“scanf(”%i“,&int)”时,会发生什么?

我的程序提示用户输入20个整数值,然后计算这些值的平均值。 我输入了以下内容:3.5,6,9,12,15,18,21,24,1000,4500,900,7,8,2,12,5,4,3,2,1 除第一个数字外,所有都是整数值,但程序告诉我平均值是3.000000。 为什么会发生这种情况呢? 我解释的最大原因是我对每个值的scanf函数提示输入一个整数,因此输入3.5会四舍五入为3或4,但这仍然无法解释结果均值为3.000000。 #include int main(void) { int count, value; double avg, sum; count = 0; sum = 0; avg = 0; while (count = 0) { sum = sum + value; count = count + 1; } else { printf(“value must be positive”); } } avg = sum / count; printf(“Average is […]

签名int范围混乱

这个问题可能是非常基本的,但我只是在谷歌搜索几天之后,以及我对C中签名整数的正确基本理解。 实际上有人说签名int有范围 -32767到32767和其他人说它有范围 -32768到32767 让我们得到int a = 5(签名/让我们考虑只有1个字节) * a = 5的第一个表示forms为00000101为正数,a = -5表示为10000101(因此范围-32767至32767对齐)(此处msb /符号位为1/0,数字为正数/负和rest(幅度位)不变) * a = 5的第二个表示forms为00000101为正数,a = -5表示为11111011(msb被视为-128,其余位被操纵以获得-5)(因此范围-32768以32767为理由) 所以我在这两件事之间混淆了。 我怀疑是c,1)或2)中signed int的实际范围是多少

printf(“%d”,“”)如何在C中工作?

我正在修改一些C概念并试过这个: printf(“%d %d %d”, “%da”, ‘a’, ‘A’); //16079992 97 65 我可以理解,对于a和A ,它打印ASCII值: 97和65 。 但是我不明白为什么它打印”%da” 16079992 。 事实上,我不理解C在将它们输出为%d整数时如何解释字符串。 这背后必须有一些算法/逻辑。 任何人?

从SQLite获取int值

我听说使用sqlite3_prepare_v2而不是sqlite_exec从数据库中获取整数,但我找不到任何示例。 这个页面也没有帮助。 现在我从数据库中获取字符串,所以我需要用atoi解析它们,这似乎是缓慢而无效的。 在SO上有很多类似的问题,但它们是关于obj-c和iOS SDK的。 我需要C / C ++提示或示例。 提前致谢。

计算带有前导零的数字总和时C中的奇怪行为

我只想在C中编写一个简约程序来计算某个自然数的位数之和(数字之和定义如下:sumOfDigits(123)= 6,sumOfDigits(0)= 0,sumOfDigits(32013)= 9 , 等等)。 到目前为止,使用以下代码片段一切正常。 例如,对于5100,它正确地提供6。 但是,为什么14为05100交付(记得领先的0)? 这里发生了什么? 我查看了数字的二进制表示,但这并没有给我任何信息。 (顺便说一下:我想,下面的代码应该在任何地方运行。) #include unsigned int sumOfDigits(unsigned int n) { int retval = 0; while (n > 0) { retval += n % 10; n/=10; } return retval; } int main() { printf(“OK: %u\n”, sumOfDigits(5100u)); printf(“WTF: %u”, sumOfDigits(05100u)); return 0; } 编辑:正如Zaibis所说……领先的0表示八进制表示法。 :-)所以:5100_8 == 2624_10