What is the output?
4 phương ánCó giải thích
#include <stdio.h>
int main(){
int a=6,b=15;
int* ptr1= &a, *ptr2=&b;
*ptr1 +=12-b+ (*ptr2);
*ptr2 = b + a- 2*(*ptr1);
printf("%d, %d, %d", a,b,b+a*3);
}Các phương án trả lời
Chọn một phương ánLời giảiChọn phương án để mở
Đáp án đúng: "18, -3, 51". Hai con trỏ ptr1 và ptr2 lần lượt trỏ tới a và b, nên ghi qua con trỏ là ghi thẳng vào hai biến đó. Lệnh thứ nhất tính 12 - b + (*ptr2) với b bằng 15, được 12 - 15 + 15 là 12, rồi cộng dồn vào a nên a thành 6 + 12 là 18. Lệnh thứ hai tính b + a - 2*(*ptr1) với b bằng 15 và a đã là 18, được 15 + 18 - 36 là -3, gán qua ptr2 nên b thành -3. Lệnh in xuất a là 18, b là -3, còn b + a*3 do phép nhân ưu tiên hơn phép cộng nên bằng -3 + 54 là 51. Dãy "12, 3, 39" ứng với việc lấy 12 làm giá trị mới của a thay vì cộng dồn vào giá trị cũ. Kết luận "Syntax error" không đúng, mọi lệnh đều hợp cú pháp kể cả việc khai hai con trỏ trên một dòng. Kết luận "Runtime error" cũng không, hai con trỏ đều trỏ vào biến cục bộ còn sống nên không có truy cập bất hợp lệ.
Cùng phần 5
What will be the output of the following C code?
#include <stdio.h>
void main()
{
int *ptr, a = 10;
ptr = &a;
*ptr += 1;
printf("%d,%d\n", *ptr, a);
}Có lời giảiCâu hỏi(Choose 1 answer)
What is the output of this C code?
#include <stdio.h>
#include <conio.h>
int main() {
int n = 267, *pn = &n;
char* pc = pn;
*pc = 0;
printf("n = %d", n);
return 0;
}Có lời giảiCâu hỏiWhat will be the output of the C program?
int arr[5] = { 2, 3, 5, 4, 7 };
int *ptr = (&arr + 1);
printf("%d %d\n", *(arr + 1), *(ptr - 1));Có lời giảiCâu hỏiCả 41 câu của chủ đề41 câu
Xuất hiện trong 1 bộ đề
Đi tiếp từ đây