[英]What does the array operator “-” (a hypen or a dash) mean and do in C?
我正在上一門操作系統課程,並且為我們分配了Abraham Silberschatz操作系統pg 157中發現的“ Project 1 UNIX Shell和歷史功能”。我正在對該問題進行研究,並遇到了一個有趣的GitHub代碼。 它包含一個“ else if”語句,其中包含一個我從未見過的運算符(破折號-)。 我正在嘗試找出它的作用。
(鏈接) https://github.com/deepakavs/Unix-shell-and-history-feature-C/blob/master/shell2.c
else if (args[0][0]-'!' ==0)
{ int x = args[0][1]- '0';
int z = args[0][2]- '0';
如您在兩個D數組“ ags [0] [0]-'!'”以及“ int x”和“ int z”上看到的一樣
有人可以告訴我這叫什么嗎?它在做什么?
謝謝
args[0][1] - '0'
是將表示數字的char
值轉換為該數字的慣用方式。 它適用於C支持的所有編碼 。
args[0][0] - '!' == 0
args[0][0] - '!' == 0
是測試args[0][0]
是否與'!'
具有相同值的一種閃光方式。 。 作者有一種特有的,也許是古怪的對稱感:大多數人會寫args[0][0] == '!'
。
這是減法。 char
值也是數字,可以像其他任何數字類型一樣相互加,減,乘和除。
代碼中具體發生的是C編譯器正在使用的字符集具有一些有用的關系,例如,數字的文本表示形式比該數字的實際數字值高'0'
,因此減去'0'
會給你數字本身。 對於C支持的所有編碼都是如此。
順便說一句,第一個比較可能就是if(args[0][0] == '!')
。
它是二進制減法運算符。 如果可以的話,算術上為“減”。
在此特定情況下,它用於從數字中減去符號值'0'
,以從符號轉換為整數。
由於字符在內部僅是數字,因此args[0][0] - '!' == 0
args[0][0] - '!' == 0
檢查第一個參數的第一個字符是否等於'!'
。 args[0][1] - '0'
將字符轉換為其數值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.