اختبارات

ثابت 3

ماذا يطبع البرنامج التالي (إذا عمل على نظام تشغيل 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 حدوده.