Tag: printf

ASM x64 scanf printf double,GAS

我无法弄清楚为什么这段代码对我不起作用。 我需要使用scanf函数用于double,然后printf用于相同的double。 使用此代码时结果不佳。 我看到的是相当随机的字符。 .data d1: .double format: .asciz “%lf\n” format2: .asciz “%lf” .text .globl main main: subq $8, %rsp #scanf movq $0, %rax movq $d1, %rsi movq $format2, %rdi call scanf addq $16, %rsp #printf movq $1, %rax movsd d1, %xmm0 movq $format, %rdi call printf addq $16, %rsp #exit movq $1, %rdi xorq […]

使用printf将int转换为char

我只是想知道以下是否是转换int以将其显示为char的正确方法 #include int main() { int x = 500; printf(“%hhd\n”, x); } 另外,从上面我想知道我是否应该执行以下操作来显示字符的值。 #include int main() { char c = ‘a’; printf(“%hhd\n”, c); } 或者只是printf(“%d\n”, c); 没事的? 所以,基本上我试图通过printf输出整数的第一个字节而不进行任何转换。

跨平台支持sprintf的格式’-Flag

Single UNIX Specification Version 2将sprintf的格式’ -flag行为指定为: 十进制转换结果的整数部分( %i , %d , %u , %f , %g或%G )将使用数千个分组字符进行格式化[ 1 ] 我在c或c ++规范中找不到格式’ -flag。 g ++甚至警告 : ISO C ++ 11不支持’ printf标志 即使在Visual C中警告,也不会识别该标志; printf(“%’d”, foo)输出 : 倒是 我希望能够编写符合C标准的代码,该代码使用格式’ -flag的行为。 因此答案我正在寻找以下之一: C-Standard格式’ -flag的规范 跨平台兼容外推gcc的格式’ -flag certificate跨平台外推是不可能的

Scanf for double在Dev C ++中不起作用

我遇到浮点数问题。 我觉得这里有些事情发生了冲突。 输出是: 我的代码: #include int main(){ double y; printf(“enter a decimal number: “); scanf(“%f”, &y); printf(“%f\n”, y); fflush(stdin); getchar(); return 0; } 我正在使用Dev C ++ 4.9.9.2,首先,如果以前没有读过,我必须多次刷回回车。 所以,如果有任何替代方案,那么告诉我。 其次输出是这个…

使用嵌套的printf语句给出奇怪的输出

我最近遇到了这个代码,我无法理解它是如何工作的 #include int main(){ printf(“Line 1\n”, printf(“Line 2\n”, printf(“Line 3\n”, printf(“Line 4\n”, 0)))); return 0; } 它提供以下输出: Line 4 Line 3 Line 2 Line 1

如果类型不匹配,printf如何工作?

int main() { printf(“%c”, “\n”); return 0; } 这里根据类型说明符,需要一个字符。 但我们传递的是const char * 。 我希望它会在代码块GNU GCC编译器中给我一个警告信息,但它没有给我任何警告并打印$字符。 为什么它没有给出任何类型的警告?

printf打印额外的“D”后getchar()调用

我正在尝试通过“C编程语言”,我遇到了一些关于printf和EOF角色的问题。 我正在使用mac终端并使用clang进行编译。 运行此代码: #include main() { int val; while ((val = getchar()) != EOF) printf(“%d\n”, val); /*val = 5;*/ /*printf(“hi\n”);*/ /*printf(“%d\n”, val);*/ printf(“%d\n”, val); } 像我期望的那样工作,阻塞直到我输入一个字符然后打印: “*character code*\n10\n” ,除了ctrl-d ,打印“ -1″然后退出。 在取消注释”val = 5;” 但是,输入“ ctrl-d ”会导致它打印: “5D” 。 我搞砸了它,发现第二次打印val(第三个注释语句)将只产生one “D”: “5D\n5” ,并且在变量(第二个注释语句)之前打印一个常量停止出现“D”: “hi\n5\n5”. 我绝对不想要D,如果有人能解释如何删除它,我将非常感激。

C和printf中的递归函数

所以,首先我是C的初学者,我们正在大学学习“结构化编程”课程。 现在,关于“递归函数”的最后几个讲座对我来说是个初学者的痛苦。 你们中的任何人都可以这样解释我: 所以我有这个小脚本,一个递归函数,它接受十进制数并将其转换为二进制数: #include void binary(int num) { if (num == 0) return; binary(num / 2); printf(“%d”, num % 2); } int main() { int n; scanf(“%d”, &n); binary(n); return 0; } 现在我想知道,这个function如何运作? 我知道它背后的逻辑,它应该做什么,但我不知道它是如何做到的。 底部的printf特别让我失望,例如,如果printf函数在递归调用之前,输入十进制数10打印出来(0101),但如果它在它下面打印出正确的二进制数(1010)? 非常感谢任何forms的帮助,亲切的问候。

为什么printf隐式浮点到int转换不起作用?

请帮助我理解以下C输出: #include int main() { float x = 4.0; printf(“%f\n”,x); printf(“%d\n”,x); int y=x; printf(“%d\n”,y); return 0; } 输出gcc编译器 4.000000 0 4 据我所知,当我们将float赋给int变量时,变量的小数部分终止然后分配给int。 为什么在这种情况下没有发生?

Linux终端中的游戏:更改图像:打印已打印的文本

好吧,我只是在linux终端中实现非常简单的纸牌游戏。 我想要实现的是改变图像的效果,基本上是对已经打印的文本进行打印(我想我不能做,除了用\ r \ n重印相同的行)。 我想要做的是获得终端高度,然后打印换行符直到终端的下边缘,然后将光标定位在终端,以便打印的最后一行将在顶部。 有没有很好的方法来做到这一点? 我刚刚找到了名为Ncurses的库。 似乎它可以做到这一点。 这是一个不错的选择吗?