Tag: cout

解除引用cout指针时的C ++ SegFault

我是C ++的新手,只是试图抓住它。 它通常看起来不是太糟糕,但我偶然发现了这种奇怪/病态的segfaulting行为: int main () { int* b; *b = 27; int c = *b; cout << "c points to " << c << endl; //OK printf( "b points to %d\n", *b); //OK // cout << "b points to " << (*b) << endl; – Not OK: segfaults! return 0; } 如此给出的这个程序产生了你所期望的: c points […]

为什么printf中相同表达式的输出与cout不同?

我正在使用Visual C ++ 2012并从命令行编译以下文件: #include int main() { printf(“%.5f”, 18/4+18%4); return 0; } 链接MSVCRT.LIB而不是LIBCMT以避免运行时错误R6002。 对于此程序,输出的值为0.00000。 但是,如果我在C ++中执行完全相同的操作 #include using namespace std; int main() { cout << 18/4+18%4 << endl; return 0; } 现在,它打印出6,就像它应该的那样。 有什么不同? 它与语言本身(C vs C ++)或输出方法(cout vs printf)有关,还是只是与MSVC的怪癖?

C ++:关于使用命名空间std和cout的问题

为什么我需要输入using namespace std; 为了能够使用cout和endl ? 这些叫做什么呢? 是一个function? C中有cout吗? 我听说它是​​用C ++实现的,因为它在很多方面都更好。

cout和printf中的意外输出

可能重复: 谁能解释这些未定义的行为(i = i ++ + ++ i,i = i ++等…) 对于以下代码: main() { int i = 1 ; cout << i << ++i << i++ ; } 为什么我得到的输出为331而不是预期的输出,即122? (即使我使用printf而不是cout,情况也是如此?)

为什么scanf似乎跳过输入?

我对以下程序中scanf的行为感到困惑。 scanf似乎输入一次,然后不再输入,直到打印出一串字符。 下面是C程序 #include int main() { int i, j=0; do { ++j; scanf(“%d”, &i); printf(“\n\n%d %d\n\n”, i, j); } while((i!=8) && (j<10)); printf("\nJ = %d\n", j); return 0; } 在这里,直到我输入任何整数程序工作完全正常,但是当输入一个字符时,它继续打印i的最后一个输入值并且永远不会停止(直到循环退出时j为10),以便scanf接受下一个输入。 output:: 1 <—–1st input 1 1 2 <—- 2nd input 2 2 a <—- character input 2 3 2 4 2 5 2 6 […]

设置精度和剪辑尾随零但从不打印指数

我需要: 设置精度,使浮点数舍入到百分位数(0.111打印为0.11) 剪辑尾随零(1.0打印为1) 永远不要打印指数(1000.1打印为1000.1) printf( “%.2f\n”, input ); // handles 1 and 3 but not 2 printf( “%.2g\n”, input ); // handles 1 and 2 but not 3 cout << setprecision( 2 ) << input << endl; // handles 1 and 2 but not 3 是否有printf或cout选项可以让我处理所有这些?