#include <stdio.h>
int main() {
int days = scanf("%d", &days);
printf("%d", days);
return 0;
}
ผลลัพธ์คือ 1 ไม่ว่าอย่างไรก็ตาม
7
1
ฉันใช้ scanf หลายครั้งและไม่เคยพบสิ่งนี้เลย ข้อตกลงที่นี่คืออะไร?
#include <stdio.h>
int main() {
int days = scanf("%d", &days);
printf("%d", days);
return 0;
}
ผลลัพธ์คือ 1 ไม่ว่าอย่างไรก็ตาม
7
1
ฉันใช้ scanf หลายครั้งและไม่เคยพบสิ่งนี้เลย ข้อตกลงที่นี่คืออะไร?
สิ่งนี้ถูกต้อง เนื่องจาก scanf()
ส่งคืนจำนวนขององค์ประกอบที่จับคู่และแปลงสำเร็จแล้ว เมื่อพิจารณาอินพุตที่เหมาะสมในกรณีของคุณ ทุกครั้งที่อินพุตของคุณผ่านการแปลง ดังนั้นคุณจะเห็นค่า 1
โปรดทราบว่า scanf()
ไม่ส่งคืน ค่าที่สแกน แต่จะเก็บค่าไว้ในอาร์กิวเมนต์ที่ส่ง
การอ้างอิง C11
บทที่ §7.21.6.4
[...] ฟังก์ชัน
scanf
จะส่งคืนจำนวนรายการอินพุตที่กำหนด ซึ่งอาจน้อยกว่าที่ระบุไว้ หรือแม้แต่ศูนย์ ในกรณีที่การจับคู่ล้มเหลวตั้งแต่เนิ่นๆ
ประเภทการส่งคืนของ scanf คือการระบุว่าอ่านจำนวนเต็มสำเร็จหรือไม่
สิ่งนี้จะทำในสิ่งที่คุณคาดหวัง
#include <stdio.h>
int main() {
int days = 0;
scanf("%d", &days);
printf("%d", days);
return 0;
}
days
ด้วย โค้ดส่งคืน จากฟังก์ชันscanf
- person t0mm13b   schedule 31.03.2017scanf
ที่ไม่ชัดเจนล่ะ - person too honest for this site   schedule 31.03.2017