我正在运行此代码和
char[] str = { 'a', 'b', 'c', 0, 'c', 'c', 'f' };
System.out.print(str);
System.out.println(" adksjfhak");
Run Code Online (Sandbox Code Playgroud)
这打印只是"abc".而,
char[] str = { 'a', 'b', 'c', 0, 'c', 'c', 'f' };
System.out.print(str);
System.out.println("\n adksjfhak");
Run Code Online (Sandbox Code Playgroud)
版画
abc
adksjfhak
Run Code Online (Sandbox Code Playgroud)
为什么打印缓冲区停止为null(0)字符?这是否意味着Java只是保持追加字符缓冲并打印缓冲区?当然,由于缓冲区之间有0,它会丢弃其余的字符串.
可能我已经回答了我自己的一部分问题.但我想知道更多关于此的细节.HOW JVM处理这个?这个输出缓冲区在哪里?有没有理由停在0?为什么添加\n会阻止此行为?
编辑1:使用JDK 1.7,Eclipse 3.8.1和Ubuntu 13.10
编辑2:奇怪的是,这个没有那个问题.https://ideone.com/VwFbRr
编辑3:我在命令行上运行相同的操作
[bin]$ java com.sakura.C
abcccf adksjfhak
Run Code Online (Sandbox Code Playgroud) 当您不包含和使用malloc时,我们会收到隐式声明警告.
"警告:内置函数'malloc'的不兼容的隐式声明"
此警告是由于编译器假定malloc定义为int malloc(size)void* malloc(size).
但它是如何知道的void* malloc(size)?我们没有在头文件中包含任何内容.那么如何将它与未包含的内容进行比较呢?
之后,我的代码如何工作?它如何找到正确的malloc定义并使用它?
是否有扫描函数定义的序列顺序?