ماذا يطبع البرنامج التالي (إذا عمل على نظام تشغيل 64-بت)؟
package main
const X = '\x61' // 'a'
const Y = 0x62
const A = Y - X // 1
const B int64 = 1
var n = 32
func main() {
if A == B {
println(A << n >> n, B << n >> n)
}
}
الخيارات:
- 0 0
- 0 1
- 1 1
- (لا يطبع شيئاً)
الإجابة: 0 1
شغِّله على Go play.
النقاط الأساسية:
- القيمة
Xغير المُنمَّطة ثابت rune (بعبارة أخرى، نوعه الافتراضي هوrune، أيint32، وهو نوع عدد صحيح 32-بت). والقيمةYغير المُنمَّطة ثابت int (بعبارة أخرى، نوعه الافتراضي هوint، وهو نوع عدد صحيح 64-بت على أنظمة التشغيل 64-بت). - في وقت التشغيل، يتجاوز التعبير
A << nحدوده، لذا يُقيَّم بالقيمة 0؛ في المقابل، لا يتجاوز التعبيرB << nحدوده.