-
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:
- Đánh giá cách thiết kế nội thất nhà ở xã hội
- hàm sort của em không chạy và khi em nhập '0' vào ISBN để break chương trình thì nó cũng không chạy.
- Xử lí hình ảnh trên objective c
- NSDictionary
trong objective c - Hỏi về Modifier trong lập trình C
- Thắc mắc về Delegate
- hoa tươi giá rẻ tại vĩnh long ,địa chỉ shop hoa toàn quốc
- Bài tập: Tạo 1 Bootloader cho kl46
- không dùng được "else if" trong visual studio 2013?
- Đố mọi người biết đây là phong cách thiết kế nội thất gì?
-
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
Thanh lý pallet nhựa cũ Đaklak Trải dài trên vùng đất Daklak, những chiếc pallet nhựa cũ Đaklak nằm rải rác như những bức tranh tĩnh lặng, kể lể về những chặng đường mà chúng đã đi qua. Những đường...
Thanh lý pallet nhựa cũ Đaklak