! X est un non-opérateur logique, préoccupé par la question de savoir si x est nul, 0 devient 1, sinon il devient 0; Alors que ~ (x) est un peu d'opérateur d'inversion, inversant chaque bit binaire de x, 0 devient 1 et 1 devient 0, le résultat peut impliquer le calcul du complément.
En langue C !x
et ~(x)
sont différents. Bien qu'ils semblent tous les deux faire une sorte de "renversement", les détails au niveau des bit de leurs effets sont en fait très différents des résultats. Ce n'est pas aussi facile que de se tromper avec l'authenticité.
Parlons d'abord de ça !x
Il s'agit d'un non-opérateur logique, il ne se soucie que si x
est nul. Si x
est zéro , !x
retourne 1 (true); Sinon,! !x
renvoie 0 (false). Notez que le zéro mentionné ici fait référence à la valeur numérique zéro, pas à un pointeur nul ou à d'autres choses étranges. Cette chose n'a de sens que pour les valeurs booléennes (ou les expressions qui peuvent être implicitement converties en valeurs booléennes), et elle ne se soucie pas du tout de la représentation binaire de x
Jetons un coup d'œil à ~(x)
. Il s'agit de l'opérateur d'inversion bit, qui inverse chaque binaire de x
. 0 devient 1, 1 devient 0. C'est le véritable "inversion". Par exemple, si x
est 10 (binaire 1010), alors ~(x)
est -11 (le complément des deux est exprimé comme 1111111111111111111111111111111111111111111, en supposant qu'il s'agit d'un entier 32 bits). Vous voyez, le résultat est complètement différent. Cela implique une représentation du complément, où la représentation binaire d'un entier et la représentation binaire de son nombre négatif sont converties en en ajoutant inversement une.
Donc, si vous voulez déterminer si une variable est nul , !x
est votre bon partenaire; Mais si vous devez inverser chaque bit de la variable, alors ~(x)
est votre choix. Ne gâchez pas. Bien que ces deux choses aient des marques d'exclamation ou des lignes ondulées, ce sont des opérateurs complètement différents et agissent à différents niveaux, et les résultats sont naturellement très différents.
Aller plus loin, x
un point ~(x)
!x
~(x)
performance , !x
Le compilateur peut optimiser, mais en principe !x
a une surcharge de calcul plus petite.
Il y a d'autres points à noter:
- La valeur de retour de
!x
est une valeur booléenne (0 ou 1), tandis que la valeur de retour de~(x)
est un entier, le même type quex
. - Pour les entiers non signés, le résultat de
~(x)
est le résultat de l'inversion bit de l'entier dans la plage de ce type. Pour les entiers signés, le résultat implique le calcul du complément, ce qui peut faire apparaître le résultat incompatible avec l'intuition. C'est une fosse sur laquelle de nombreux débutants sont enclins à marcher. Vous devez comprendre le principe du code du complément pour éviter ces malentendus.
Enfin, rappelez-vous: le code doit être écrit clairement et facilement compréhensible, et ne sacrifiez pas la lisibilité à la recherche de la soi-disant «concision». Sélectionnez le bon opérateur et écrivez des commentaires clairs pour rendre votre code plus facile à comprendre et à maintenir. C'est la véritable façon de programmer.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

C # est un langage de programmation moderne et orienté objet développé par Microsoft et dans le cadre du .NET Framework. 1.C # prend en charge la programmation orientée objet (POO), y compris l'encapsulation, l'héritage et le polymorphisme. 2. La programmation asynchrone en C # est implémentée via Async et attend des mots clés pour améliorer la réactivité des applications. 3. Utilisez LINQ pour traiter les collections de données concisement. 4. Les erreurs courantes incluent les exceptions de référence NULL et les exceptions indexes hors gamme. Les compétences de débogage comprennent l'utilisation d'un débogueur et une gestion des exceptions. 5. L'optimisation des performances comprend l'utilisation de StringBuilder et d'éviter l'emballage et le déballage inutiles.

Les stratégies de test pour les applications C # .NET comprennent les tests unitaires, les tests d'intégration et les tests de bout en bout. 1. Le test unitaire garantit que l'unité minimale du code fonctionne indépendamment, en utilisant le cadre MSTEST, NUnit ou Xunit. 2. Les tests intégrés vérifient les fonctions de plusieurs unités combinées et des données simulées couramment utilisées et des services externes. 3. Les tests de bout en bout simulent le processus de fonctionnement complet de l'utilisateur et le sélénium est généralement utilisé pour les tests automatisés.

L'entrevue avec C # Developer Senior Developer nécessite de maîtriser les connaissances de base telles que la programmation asynchrone, la LINQ et les principes de travail internes des frameworks .NET. 1. La programmation asynchrone simplifie les opérations par asynchronisation et attend pour améliorer la réactivité de l'application. 2.Linq exploite des données dans le style SQL et fait attention aux performances. 3. La CLR du cadre net gère la mémoire et la collecte des ordures doit être utilisée avec prudence.

C # .NET Les questions et réponses d'entrevue comprennent les connaissances de base, les concepts de base et l'utilisation avancée. 1) Connaissances de base: C # est un langage orienté objet développé par Microsoft et est principalement utilisé dans le framework .NET. 2) Concepts de base: la délégation et les événements permettent des méthodes de liaison dynamiques, et LINQ fournit des fonctions de requête puissantes. 3) Utilisation avancée: la programmation asynchrone améliore la réactivité et les arbres d'expression sont utilisés pour la construction de code dynamique.

C # .NET est un choix populaire pour construire des microservices en raison de son fort écosystème et de son riche soutien. 1) Créez RestulAPI à l'aide d'Asp.Netcore pour traiter la création et la requête de l'ordre. 2) Utilisez GRPC pour obtenir une communication efficace entre les microservices, définir et mettre en œuvre les services de commande. 3) Simplifiez le déploiement et la gestion via des microservices conteneurisés Docker.

Les meilleures pratiques de sécurité pour C # et .NET incluent la vérification des entrées, le codage de sortie, la gestion des exceptions, ainsi que l'authentification et l'autorisation. 1) Utilisez des expressions régulières ou des méthodes intégrées pour vérifier les entrées afin d'empêcher les données malveillantes d'entrer dans le système. 2) Encodage de sortie pour empêcher les attaques XSS, utilisez la méthode HTTPutility.htmLencode. 3) La gestion des exceptions évite la fuite d'informations, enregistre les erreurs mais ne renvoie pas d'informations détaillées à l'utilisateur. 4) Utilisez ASP.NetIdentity et l'autorisation fondée sur les réclamations pour protéger les applications contre l'accès non autorisé.

La signification du colon (':') dans le langage C: déclaration conditionnelle: séparation des expressions conditionnelles et de l'instruction Block Loop Instruction: séparation d'initialisation, d'expression conditionnelle et incrémentale Définition de macro: séparation du nom de macro et de la macro-valeur commentaire: représentant le contenu du côlon à la fin de la ligne comme dimension de tableau de commentaire: spécifiez la dimension du tableau

A Langue en C est un opérateur post-augmentation, et son mécanisme de fonctionnement comprend: l'obtention d'abord de la valeur de la variable a. Augmenter la valeur de A de 1. Renvoie la valeur de A après augmenter.


Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

Adaptateur de serveur SAP NetWeaver pour Eclipse
Intégrez Eclipse au serveur d'applications SAP NetWeaver.