2013-05-10 45 views

Trả lời

67
NSUInteger intVal = 10; 
int iInt1 = (int)intVal; 
NSLog(@"value : %lu %d", (unsigned long)intVal, iInt1); 

để tham khảo hơn, nhìn here

+1

Tài liệu của Apple (liên kết của bạn) nêu rõ "Truyền giá trị cho chưa ký dài". cho 'NSUInteger'. Vì vậy, dòng cuối cùng nên là 'NSLog (@" giá trị là:% lu% d ", (unsigned long) intVal, iInt1);'. –

+0

@NikolaiRuhe thx vì chỉ lỗi của tôi, tôi đã cập nhật câu trả lời của mình – Girish

0

Nó đơn giản như thế này,

NSUInteger uintV = 890; 
int intVal = (int) uintV; 
NSLog(@"the value is : %lu", (unsigned long)intVal); 


này sẽ in một cái gì đó như thế này,
giá trị là: 890

+0

Giải thích về bỏ phiếu xuống, vui lòng ... –

3

cast Explicit để int

NSUInteger foo = 23; 
int bar = (int)foo; 

Mặc dù

NSLog(@"%lu",foo); 

sẽ làm việc OK trên hiện xây dựng của OSX. Nó không an toàn, vì NSUInteger được đánh máy là int không dấu trên các bản dựng khác. Chẳng hạn như iOS. Câu trả lời đúng là bỏ nó đầu tiên:

NSLog(@"%lu",(unsigned long)foo); 
1

Hi tất cả lao động của nó đối với tôi ...

Tôi cố gắng này ..

NSUInteger inbox_count=9; 
NSLog(@"inbox_count=%d",(int)inbox_count); 

//output 
inbox_count=9 

cảm ơn tất cả ..

+0

Ý tưởng tồi. Trên OSX, NSUInteger dài. Vì vậy, đúc để int sẽ tràn cho các giá trị lớn. Nó có thể là OK cho iOS, nhưng tốt hơn để làm quen với việc thực hiện nó theo cách không phá vỡ các bản dựng khác. –

+2

@SteveWaddicor Bạn có các sự cố khác khi hộp thư đến của bạn chứa> 2 tỷ thư. –

+0

Các chi tiết cụ thể của trường hợp này không phải là giới hạn của một câu trả lời stackoverflow. Người khác có thể cố gắng áp dụng mã bị hỏng cho một số có thể nhận được số lượng lớn. Tốt hơn để làm điều đó đúng, khi làm điều đó sai là không dễ dàng hơn. –

Các vấn đề liên quan