اختبارات

معامل 2

ماذا يطبع البرنامج التالي؟


package main

func main() {
	count := 0
	for i := range [256]struct{}{} {
		if n := byte(i); n == -n {
			count++
		}
	}
	println(count)
}

الخيارات:

  • 0
  • 1
  • 2
  • 3

الإجابة: 2

شغِّله على Go play.

النقاط الأساسية:

  • في Go، بالنسبة إلى قيمة x من نوع byte (أي uint8) غير ثابتة وغير صفرية، يتجاوز -x نطاق النوع byte ويُلَفّ على هيئة (-x + 256) % 256.
  • بالنسبة إلى متغير x من النوع byte، لا يحدث x == -x إلا عندما تكون x تساوي 0 أو 128.