Java 運算時遵循「小類型向大類型提升」原則,char、byte、short 參與 int 運算會自動提升為 int。
System.out.println('a' + 1); // 98 ('a' ASCII 97 提升為 int)
System.out.println('1' + 1); // 50 ('1' ASCII 49 提升為 int)
byte b = 3;
// b = b + 2; // 編譯錯誤:int 無法賦值給 byte (可能損失精度)
b = (byte)(b + 2); // 強制轉換,正確
System.out.println(b); // 5
byte/short/char → intlong,整體提升為 longfloat,整體提升為 floatdouble,整體提升為 double<?php
var_dump('a' + 1); // int(1) 字串 'a' 轉數值為 0 (非數字字串) + 1 = 1
var_dump('1' + 1); // int(2) 字串 '1' 自動轉 int
var_dump((int)'1'); // int(1) 顯式轉型
var_dump((bool)'1'); // bool(true)
var_dump((array)'1');// array(1) { [0]=> string(1) "1" }
?>
char 為無符號 16 位整數,直接對應 Unicode 碼點。