scanf ("%ld", p=&a);正确吗?
时间: 2023-12-15 13:32:17 浏览: 122
根据提供的引用内容,scanf ("%ld", p=&a) 是不正确的。正确的写法应该是scanf("%ld", &a),其中%ld表示读取一个长整型变量,&a表示将读取的值存储到变量a中。scanf函数的格式化字符串中只能包含格式说明符和空格,不能包含其他字符。如果需要读取多个变量,可以在格式化字符串中使用多个格式说明符,并在后面用逗号分隔每个变量对应的地址。例如,scanf("%d %f %c", &x, &y, &z)可以依次读取一个整型变量、一个浮点型变量和一个字符变量。
相关问题
若有说明:long *p,a;则不能通过scanf语句正确给输入项读入数据的程序段是______。(1分) p=&a;scanf("%ld",p); *p=&a;scanf("%ld",p); scanf("%ld",p=&a); scanf("%ld",&a)
不能通过 `scanf` 语句正确给输入项读入数据的程序段是第二个程序段 `*p=&a;scanf("%ld",p);`。
原因是:
- `p` 是一个指向 `long` 类型变量的指针,指向的是变量 `a` 的地址。
- 在第二个程序段中,`*p = &a;` 这条语句是错误的,因为 `*p` 表示 `p` 指向的内存中的值,是一个 `long` 类型的值,而 `&a` 是一个指向 `a` 变量地址的指针,类型为 `long *`,两者类型不匹配。
- 因此,第二个程序段会编译出错,不能正确给 `a` 变量赋值。正确的语句应该是 `scanf("%ld", p);`,该语句可以从标准输入读取一个 `long` 类型的值,并将其存储到 `a` 变量的地址中。
scanf ("%ld", p=&a);
根据提供的引用内容,`scanf ("%ld", p=&a);`这行代码是错误的,正确的写法应该是`scanf("%ld",&a);`。`scanf`函数是C语言中的一个输入函数,用于从标准输入设备(如键盘)读取数据。`%ld`是`scanf`函数的格式控制符,用于读取长整型数据。`&a`表示将读取到的数据存储到变量`a`的地址中。
阅读全文