簡體   English   中英

數組運算符“-”(連字符或破折號)在C語言中的含義和作用是什么?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM