java - Java 中的 C 格式说明符 "%n"

标签 java c printf

所以我开始学习java,我想知道是否可以使用“%n”参数(来自C printf()),它应该写入写入“%n”参数的字节数:

这是它在 C: 中的使用

#include <stdio.h>

int main()
{
  int val;

  printf("ciao %n ciao\n", &val);

  printf("val = %d\n", val);

  return 0;

}

打印:

ciao  ciao
val = 5

但是当我尝试在 java 中使用它时:

public class CharTest
{ 
   public static void main(String[] argv)
   {    
      int  value;

      System.out.printf("\nNumber of bytes written up to now: %n\n", &value); 
      System.out.println(value);
   }
}

java 编译器给我这个消息:

CharTest.java:20: error: illegal start of expression

System.out.printf("\nNumber of bytes written up to now: %n\n", &value); 
                                                               ^
1 error

如何解决这个问题?

最佳答案

在 C 中,您可以通过引用传递参数,或者通过传递指针来更改传递给函数的变量值,%n 说明符存储到目前为止在 中写入的字符数value,为了做到这一点,您必须使用 &value 将指针传递给 value

在 Java 中,不可能通过引用传递参数或传递变量指针,并且不可能使用相同的语法,& 运算符是按位与。 Java 中的 printf %n 说明符打印特定于平台的行分隔符。

关于java - Java 中的 C 格式说明符 "%n",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46620796/

相关文章:

c - Eclipse C printf() 失败

java - 使用堆栈获取逻辑子表达式

java - testng - 在 testng.xml 中将列表作为参数传递

c - 使用动态数组的段错误

c - 初始化结构变量数组 - C

c++ - 使用 char *argv[] 而不是 char* argv[] 之间有很大的原因/差异吗?

c++ - __LINE__ 宏在定义 printf 的宏时不起作用

java - 在 hibernate 中如何编写查询以使用复合键检索数据?

java - 列表项 ArrayList ListView

c++ - 为什么我的代码中的fprintf()函数无法正常工作?