Lỗi ép kiểu từ string sang int trong c

[Warning] assignment makes integer from pointer without a cast
Lỗi này xảy ra khi em ép kiểu:
int a;
a = “Vu”;
Chương trình vẫn chạy được nhưng nó ra cảnh báo
em có search google nhưng vẫn chưa hiểu lắm
Ai có thể giải thích cụ thể giúp em được không
em cám ơn

Gán giá trị một cách không an toàn.
Thao tác nào thực hiện gán giá trị của con trỏ cho một giá trị kiểu số (int).
Bạn có thể ép kiểu ((int)a) những vẫn có cảnh báo.

Chạy thử:


Bạn sẽ thấy giá trị của biến x là 4 byte thấp của địa chỉ con trỏ chuỗi a 8 byte.

2 Likes

Em có thể giải thích cho mọi người hiểu được là
Mục đích (để làm gì) và
Mong muốn (tức là mong muốn giá trị của a bằng bao nhiêu) và
Lý do (tại sao nó lại phải như vậy)
Sau pha ép kiểu thần thánh này hay không ?

6 Likes

em đang tìm hiểu về C và đang học bài ép kiểu nên em mới mày mò thử nhưng nó lại ra cảnh báo search google thì em đọc cũng hơi hiểu nhưng em muốn hiểu sâu hơn nên mới hỏi thôi anh:))

Anh có thể giải thích cho em tại sao lại không an toàn được không làm như vậy thì khi chạy trường hợp nào sẽ xảy ra lỗi gì ạ và chuỗi em ép chỉ có 2 kí tự thì sao nó lại lên 8 byte và khi ép xong nó trả cho em một dãy số kì lạ thĩ số đó có ý nghĩa gì ạ tại vì tài liệu em học nó chỉ có nói qua loa thôi nhưng em có bản tính tò mò muốn tìm hiểu sâu mà search google em khó tìm được câu trả lời cho mấy vấn đề như này nên anh giải thích giúp em với

Kì thực C không có kiểu string đâu :slight_smile: chỉ có con trỏ trỏ đến 1 vùng nhớ được quy ước như string.

Nếu bạn muốn cast thì chỉ có memcpy vào một int* vì ép kiểu con trỏ sẽ hỏng do địa chỉ cho int không chẵn (misaligned) và có thể bất hợp lệ.

3 Likes

để sau em quay lại em mới học chưa tới vòng lặp nữa nên anh giải thích em cũng không hiểu

Ép kiểu tức là chuyển kiểu dữ liệu từ dạng này sang dạng kia nhưng phải có nhiều điểm tương đồng thì mới ép được.
Ví dụ thịt lợn sề có thể ép kiểu sang thịt trâu vì nó cũng thâm thâm dai dai chứ cá làm sao ép sang thịt trâu được :joy:

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?