Các bạn không ai thấy lạ sao?
Không biết trình biên dịch khác cho kết quả như thế nào nhỉ?
C++ Code:
#include <iostream> using namespace std; int main(int argc, char *argv[]) { const int i = 5; const int *p = &i; (*const_cast<int*>(p))+= 7; } /* Kết quả trên cxxdroid là 0x7fdb88c15c 5 0x7fdb88c15c 5 0x7fdb88c15c 5 //kết quả 2 dòng này 0x7fdb88c15c 12 //khác nhau, lạ không??? Không biết trình biên dịch khác có như vậy không? [Program finished] */
- - - Nội dung đã được cập nhật ngày 23-11-2020 lúc 07:22 PM - - -
Đang cố gắng hiểu
i không đổi vì khai báo const
*p thay đổi vì const_cast
Thế nhưng tại 1 địa chỉ chứa 2 giá trị thì quả là lạ, đúng không?
Các bạn không ai thấy lạ sao?
Không biết trình biên dịch khác cho kết quả như thế nào nhỉ?
C++ Code:
#include <iostream> using namespace std; int main(int argc, char *argv[]) { const int x = 11; int & ref1 = const_cast<int&>(x); int & ref2 = const_cast<int&>(x); int * ptr1 = const_cast<int*>(&x); int * ptr2 = const_cast<int*>(&x); ref1++; ref2 += 2; *ptr1 += 3; *ptr2 += 4; } /* kết quả trên cxxdroid 0x7fef0a230c 11 0x7fef0a230c 21 0x7fef0a230c 21 0x7fef0a230c 21 0x7fef0a230c 21 [Program finished] *