-
23-10-2015, 11:58 AM #1Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
A/c giỏi c++ giúp giùm e mấy bài này với.
Kết quả của chương trình dưới đây là gì? Hãy giải thích.
#include <stdio.h>
int main(){
int i = 158;
char c = i;
int j = c;
printf("%d",j);
return 0;
}
Hãy giải thích điều gì xảy ra khi chạy đoạn mã sau:
void main(){
char * p = new char[30];
p = "hello";
delete [] p;
}
Kết quả in ra màn hình của đoạn mã sau là gì? Giải thích.
#include <stdio.h>
#define add(x, y, z) x + y + z
int main(){
float a = (add(10, 2, 1) * 5.0f);
printf("%f",a);
return 0;
}View more random threads:
- Trong thiết kế nội thất, chúng tôi luôn mong muốn làm hài lòng quý khách
- Dùng break trong while không được
- Hướng dẫn làm application cho Apple Watch
- Phát triến ứng dụng Iphone trên iPhone Development SDK
- Thắc mắc
- Thắc mắc
- Ae có code ngắn hơn về nhập ma trận xoắn óc ko ????
- cách dùng bảng băm
- Parse Json từ API và hiển thị lên UITableView
- [help] số nguyên tố
-
23-10-2015, 03:54 PM #2Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Cái đầu = -98. Vì ở dòng char c = i; tương đương char c = 158; Nhưng kiểu char nhận giá trị 1 byte. Do đó khi quá nó sẽ vòng ngược lại, giống vòng tròn ấy. Nghĩa là c = 127 + 31. Từ -128 đến -99 là có 30 giá trị. Vậy giá trị thứ 31 là -98.
Cái thứ hai là một con trỏ tên p, trỏ đến một mảng char có 30 phần tử. Nghĩa là cấp một vùng nhớ có 30 byte và cho p nhớ địa chỉ của 30 byte này. Sau đó gán các char h,e,l,l,o,\0 vào vùng 30 byte này. Cuối cùng là delete p nghĩa là delete cái ô nhớ ghi địa chỉ của 30 byte kia, chứ không delete nội dung của 30 byte
ra kết quả là 17 do add(10, 2, 1) sẽ được thay bằng 10 + 2 + 1 vậy câu lệnh sẽ thành (10 + 2 + 1 * 5.0f); Nhân ưu tiên trước => 10+2+5 = 17
-
23-10-2015, 04:07 PM #3Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Bạn có thể giải thích giùm cái vòng tròn được không, mình không hiểu lắm.
-
24-10-2015, 11:38 AM #4Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi LPS86
sau khi gán p = "hello" thì p trỏ đến 1 vùng mới, không còn là cái 30 byte kia nữa. delete[] p sẽ gây lỗi.
-
24-10-2015, 02:04 PM #5Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
0 1 2 3 4 .............. 126 127 -128 -127 -126 -125 -124..............-2 -1 0 1 2 3........
-
25-10-2015, 06:49 PM #6Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Đúng là delete[] p sẽ gây lỗi nhưng nói "sau khi gán p = "hello" thì p trỏ đến 1 vùng mới" thì chưa hẳn.
Mã:char * p = new char[30];
-
25-10-2015, 07:41 PM #7Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi LPS86
http://ideone.com/E2L9KY
Pallet nhựa Lâm Đồng giải pháp hoàn hảo cho nhà kho Pallet nhựa Lâm Đồng là một giải pháp đa năng và hiệu quả trong việc vận chuyển và lưu trữ hàng hóa. Trong đó, pallet nhựa Lâm Đồng không chỉ đáp...
Pallet nhựa Lâm Đồng giải pháp...