J’essaie de comprendre comment le pointeur incrémenté et le déréférencement vont de pair, et j’ai fait ceci pour l’essayer #include int main(int argc, char *argv[]) { char *words[] = {“word1″,”word2”}; printf(“%p\n”,words); printf(“%s\n”,*words++); printf(“%p\n”,words); return 0; } Je m’attendais à ce que ce code fasse l’une de ces choses: D’abord déréférencer puis augmenter le pointeur (mot […]
int main() { int value = 4321; int *ptrVal = &value; printf(“%d %d”,++value,(*(int*)ptrVal)–); return 0; } Comment le pré-incrément / post-incrément fonctionne-t-il dans l’instruction print ci-dessus? Et pourquoi est la réponse 4321 4321?
Je travaille sur K & R et je suis actuellement sur l’exercice 1-16. Il me semble que jusqu’à présent, seul le pré-incrément a été utilisé dans le livre. La plupart des autres didacticiels et du code source que j’ai vus ont tendance à favoriser les post-incréments, sauf en cas d’affect évident, comme dans les boucles […]
Je voudrais refactoriser un de mes anciens codes C, et je me demandais si je pouvais remplacer tout ptr++ par ptr += 1 où ptr est un pointeur, sans modifier aucun comportement. Voici un exemple de ce que je veux dire, extrait de la section 5.3 de K & R: /* strlen: return length of […]
J’exécute les programmes suivants dans Visual C ++ et Java: Visual C ++ void main() { int i = 1, j; j = i++ + i++ + ++i; printf(“%d\n”,j); } Sortie: 6 Java: public class Increment { public static void main(Ssortingng[] args) { int i = 1, j; j = i++ + i++ + ++i; […]
int get() { static i = 1; return i++; } int main(int argc, char *argv[]) { printf(“%d %d %d\n”, get(), get(), get()); return 0; } Sortie: 3 2 1 (L’ordre dépend du compilateur) Question: Mais pourquoi la valeur avant incrément de la variable statique (scope du fichier) est-elle renvoyée? Quelle est la règle du pouce […]
J’utilise mon code C sur gcc pour comprendre l’opérateur pré / post incrément. Cependant, les résultats que je vois ne sont pas ce à quoi je m’attendais. Comme pour la ligne 6, puisque i est 5, il aurait dû être 8 7 6 5 5 Mais c’est 8 7 6 5 8 Ensuite, à la […]
Ci-dessous, mon extrait de code en C. void main(){ int x = 7; x = x++; printf(“%d”,x); } sortie: 8 public static void main(Ssortingng[] args){ int x = 7; x = x++; System.out.println(x); } sortie: 7 Je ne comprends pas pourquoi les deux langues donnent des résultats différents. J’ai mentionné le lien ci-dessous. Qu’est-ce que […]
Dupliquer possible: Points de comportement et de séquence non définis Veuillez expliquer le comportement des déclarations suivantes int b=3; cout<<b++*++b<<endl; Comment sera-t-il calculé?
J’apprends la programmation et je suis parti du langage C. Je lisais Let us C book. Et je parcourais ce programme dans ce livre. main( ) { int a[5] = { 5, 1, 15, 20, 25 } ; int i, j, k = 1, m ; i = ++a[1] ; j = a[1]++ ; m […]