Вы, кажется, немного озадачены тем, как работают псевдонимы (и поверьте мне, это совершенно нормально, они довольно не интуитивны! Мне понадобилось время, чтобы понять, как они работают, и все же я не уверен на 100%, нопозвольте мне ответить на ваш вопрос!)
Во-первых, не принимайте псевдонимы как «переменные»!Они не являются символическими именами для сохранения определенных значений.Они больше похожи на макросы (которые заменяются препроцессором, если они назначены).
Чтобы заметить разницу, обратите больше внимания на то, как работает .printf "a1 = %d", a1
.Я не знаю, есть ли у нас разные версии или это связано со странным правилом интерпретации псевдонимов о «вводе нового блока», но вот что я вижу:
0:000> as /x a1 1+1
0:000> .echo a1
0x2
0:000> .printf "a1 = %d", a1
0x2 = 2
Примечаниечто он не говорит a1 = 2
, но также заменяет a1
внутри кавычки (или, более того, везде, где он его видит).Это как если бы выполнял поиск и замену строки перед выполнением команды!
Итак, во втором примере, опять же, он заменяет строку вывода этой команды как в формате printfкавычки спецификатора и после (когда это используется в качестве аргумента).И если вывод этой команды не похож на список аргументов printf, он запутается!
Правило большого пальца с псевдонимами - смелое предложение, которое я думаю выше.Примите их как макросы, которые будут заменены препроцессором.