Saya menemukan keduanya long int long
dan int long long
dapat mengkompilasi untuk tipe variabel. Apakah ada perbedaan antara long int long
, int long long
, long long
dan long long int
?
Secara umum, apakah jenisnya identik jika memiliki jumlah yang sama long
?
1 panjang:
long l;
int long il;
long int li;
2 panjang:
long long ll;
int long long ill;
long int long lil;
long long int lli;
Juga jika di atas benar, apakah pernyataan berikut ini juga identik?
long long* llp;
int long long* illp;
long int long* lilp;
long long int* llip;
c++
syntax
long-integer
ggrr
sumber
sumber
std::swap
. Ini tidak akan dikompilasi jika jenisnya tidak identik.Jawaban:
Menurut Standar C ++ (7.1.6.2 Penentu tipe sederhana)
Jadi misalnya deklarasi berikut ini valid
Anda bahkan dapat menggunakan
constexpr
specifier bersama denganconst
kualifikasi. Sebagai contohOmong-omong, kami lupa tentang specifier
signed
! Mari kita tambahkan misalnya sebelum deklaratorx
Dalam C Anda juga dapat menggunakan beberapa jenis kualifikasi dalam urutan specifier menyatakan yang sama. Menurut Standar C (6.7.3 Jenis kualifikasi)
Jadi misalnya dalam C deklarasi berikut ini juga valid
Jadi, jika Anda dibayar sesuai dengan jumlah simbol yang diketik dalam program maka saya menyarankan Anda untuk menggunakan deklarasi seperti itu. :)
sumber
#define REM(...)
, dan kemudian untuk contoh jumlah kata yang besari++; REM(Here, we increment i to make sure the new value of i is one more than the old value of i. This is safe because we know the value of i is less than the maximum value of i's type.)
,?const const const const const const const const const const const const const const const const const const const const const const const const const const const const const const const const const const const const const const const const const const answer = 42;
mengkompilasi dengan baik di C :-)Iya.
C ++ 11 §7.1.6.2 / 3
sumber
Ya, tapi tolong jangan . Sama seperti bahasa Inggris dan Jerman memiliki perintah kata konvensional untuk kata sifat dan kata keterangan (misalnya tempat waktu), begitu juga C dan C ++. Memvariasikan dari pesanan konvensional tidak akan membingungkan kompiler, tetapi akan membingungkan rekan pengembang Anda. Saya akan menyarankan bahwa urutan konvensional kira-kira sepanjang garis
static
/extern
(tautan)const
/volatile
(modifikasi)signed
/unsigned
(kesesuaian)short
/long
(panjang)meskipun pasti ada beberapa ruang gerak.
sumber
Semua jawaban lain di sini berbicara tentang bagian kedua dari pertanyaan Anda. Untuk bagian pertama: Apakah "long long" = "long long int"? , jawabannya adalah ya .
C ++ 11 7.1.6.2 Penentu tipe sederhana (tabel 10)
Untuk bagian kedua dari pertanyaan Anda: Apakah "panjang int panjang" = "panjang panjang"? , jawabannya ya lagi.
Tipe-penentu dapat terjadi dalam urutan apa pun dan dapat dicampur dengan penentu deklarasi lainnya. Karena itu, semua hal berikut
valid dan setara.
sumber