2011-12-10 30 views
17
int arr[20][20] = { 
        {08,02,22,97,38,15,00,40,00,75,04,05,07,78,52,12,50,77,91,08}, 
        {49,49,99,40,17,81,18,57,60,87,17,40,98,43,69,48,04,56,62,00}, 
        {81,49,31,73,55,79,14,29,93,71,40,67,53,88,30,03,49,13,36,65}, 
        {52,70,95,23,04,60,11,42,69,24,68,56,01,32,56,71,37,02,36,91}, 
        {22,31,16,71,51,67,63,89,41,92,36,54,22,40,40,28,66,33,13,80}, 
        {24,47,32,60,99,03,45,02,44,75,33,53,78,36,84,20,35,17,12,50}, 
        {32,98,81,28,64,23,67,10,26,38,40,67,59,54,70,66,18,38,64,70}, 
        {67,26,20,68,02,62,12,20,95,63,94,39,63,08,40,91,66,49,94,21}, 
        {24,55,58,05,66,73,99,26,97,17,78,78,96,83,14,88,34,89,63,72}, 
        {21,36,23,09,75,00,76,44,20,45,35,14,00,61,33,97,34,31,33,95}, 
        {78,17,53,28,22,75,31,67,15,94,03,80,04,62,16,14,09,53,56,92}, 
        {16,39,05,42,96,35,31,47,55,58,88,24,00,17,54,24,36,29,85,57}, 
        {86,56,00,48,35,71,89,07,05,44,44,37,44,60,21,58,51,54,17,58}, 
        {19,80,81,68,05,94,47,69,28,73,92,13,86,52,17,77,04,89,55,40}, 
        {04,52,08,83,97,35,99,16,07,97,57,32,16,26,26,79,33,27,98,66}, 
        {88,36,68,87,57,62,20,72,03,46,33,67,46,55,12,32,63,93,53,69}, 
        {04,42,16,73,38,25,39,11,24,94,72,18,08,46,29,32,40,62,76,36}, 
        {20,69,36,41,72,30,23,88,34,62,99,69,82,67,59,85,74,04,36,16}, 
        {20,73,35,29,78,31,90,01,74,31,49,71,48,86,81,16,23,57,05,54}, 
        {01,70,54,71,83,51,54,69,16,92,33,48,61,43,52,01,89,19,67,48} 
        }; 

tôi nhận được lỗi sauCó gì sai với khai báo mảng: "số không hợp lệ trong hằng số bát phân"?

q11.c:8:10: error: invalid digit "8" in octal constant 
q11.c:8:67: error: invalid digit "8" in octal constant 
q11.c:15:49: error: invalid digit "8" in octal constant 
q11.c:17:19: error: invalid digit "9" in octal constant 
q11.c:18:58: error: invalid digit "9" in octal constant 
q11.c:22:16: error: invalid digit "8" in octal constant 
q11.c:24:46: error: invalid digit "8" in octal constant 
+1

http://projecteuler.net/problem=11 –

+0

Một chi tiết lịch sử thú vị là trong phiên bản trước K & R của thông số ngôn ngữ C ("C Hướng dẫn tham khảo" thời đại) nó đã được OK để sử dụng 8 và 9 trong hằng số bát phân. Các chữ số này được giữ nguyên số thập phân "" trong ký hiệu vị trí, tức là 08 có cùng giá trị là 010 và 8, 090 thực ra là 0110 và 72, vn. – AnT

Trả lời

38

Đừng tiền tố số của bạn với 0, trừ khi bạn muốn họ đối xử như bát phân, mà rõ ràng bạn không. Vì vậy, chỉ cần sử dụng 8 thay vì 08.

Nếu bạn kiên quyết giữ mọi thứ được căn chỉnh đúng cách, ngay cả với các số có một chữ số, chỉ cần sử dụng dấu cách thay vì số không.

7

Số có số 0 đứng đầu được lấy làm bát phân bởi trình biên dịch, vì vậy sau đó, các chữ số lớn hơn 7 kích hoạt lỗi.

7

Vấn đề là bạn bắt đầu một số con số với 0, có nghĩa là họ là những con số bát phân (8-based)

4

Trong CPP số bát phân được bắt đầu với 0 (zero), octals giá trị nằm trong khoảng 0- 7, do đó, 08 và 09 sẽ luôn là hằng số bát phân không xác định bởi trình biên dịch, tốt hơn để loại bỏ số không (tiền tố) từ 08 và 09.

+0

Câu hỏi là về C. –

+0

@PascalCuoq có và 'CPP' thường đề cập đến bộ tiền xử lý C thay vì C++, làm cho điều này trở nên khó hiểu hơn. – RastaJedi

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